当前位置: 首页 > news >正文

温州市建设工程质量监督站网站腾讯开放平台官网

温州市建设工程质量监督站网站,腾讯开放平台官网,甘肃公司网站建设哪家好,网站怎么做外链目录 1. 分析网页试着拿到多个页面的url2. 抓取250个电影3. start_requests的使用4. 代码规范导库的优化关于重写最终修改后的代码 总结 欢迎关注 『scrapy爬虫』 专栏#xff0c;持续更新中 欢迎关注 『scrapy爬虫』 专栏#xff0c;持续更新中 1. 分析网页试着拿到多个页面… 目录 1. 分析网页试着拿到多个页面的url2. 抓取250个电影3. start_requests的使用4. 代码规范导库的优化关于重写最终修改后的代码 总结 欢迎关注 『scrapy爬虫』 专栏持续更新中 欢迎关注 『scrapy爬虫』 专栏持续更新中 1. 分析网页试着拿到多个页面的url 看到了一个个a标签对应的几页的页码url 这是1页到3页,因为是top250,总共10页.每一页就是25个,也对应着url中的参数0,25,50 https://movie.douban.com/top250?start0filter https://movie.douban.com/top250?start25filter https://movie.douban.com/top250?start25filter我们的douban.py import scrapy from scrapy import Selectorfrom myscrapy.items import MovieItemclass DoubanSpider(scrapy.Spider):name doubanallowed_domains [movie.douban.com]# 限制或允许访问的域名列表start_urls [https://movie.douban.com/top250] # 起始urldef parse(self, response):myselectorSelector(textresponse.text)# 拿到了所有的li,也就是所有的电影,每一个li代表一个电影,list_items是由250个电影li组成的listlist_itemsmyselector.css(#content div div.article ol li)for list_item in list_items:movie_itemMovieItem()#新建类的对象# 电影标题的 Selector# content div div.article ol li:nth-child(1) div div.info div.hd a span:nth-child(1)movie_item[title]list_item.css(span.title::text).extract_first() # extract_first()从选择器中提取第一个匹配的数据。# 电影评分# content div div.article ol li:nth-child(1) div div.info div.bd div span.rating_nummovie_item[score]list_item.css(span.rating_num::text).extract_first() # extract_first()从选择器中提取第一个匹配的数据。# # 电影影评# content div div.article ol li:nth-child(1) div div.info div.bd p.quote spanmovie_item[quato]list_item.css(span.inq::text).extract_first() # extract_first()从选择器中提取第一个匹配的数据。yield movie_item#把整理得到的数据给管道# 单个页面selector# content div div.article div.paginator a:nth-child(3)# ::attr(href)表示选取元素的href属性。使用.getall()方法可以获取匹配到的所有元素的href属性值并将其存储在一个列表中。hrefs_listmyselector.css(div.paginator a::attr(href))for href in hrefs_list:urlresponse.urljoin(href.extract())print(url)cmd运行,可以看到获取了url scrapy crawl douban2. 抓取250个电影 这里要用到scrapy中的request库,注意不是我们之前的requests这一个s的区别很大,不要导错包了. 我们之前不是定义过一个MovieItem类吗?这个request是scrapy内部定义好的,我们在这里传入的url都会和我们前面的start_urls [https://movie.douban.com/top250] # 起始url 一样用于爬虫. import scrapy from scrapy import Selector,Request from myscrapy.items import MovieItemclass DoubanSpider(scrapy.Spider):name doubanallowed_domains [movie.douban.com]# 限制或允许访问的域名列表start_urls [https://movie.douban.com/top250] # 起始urldef parse(self, response):myselectorSelector(textresponse.text)# 拿到了所有的li,也就是所有的电影,每一个li代表一个电影,list_items是由250个电影li组成的listlist_itemsmyselector.css(#content div div.article ol li)for list_item in list_items:movie_itemMovieItem()#新建类的对象# 电影标题的 Selector# content div div.article ol li:nth-child(1) div div.info div.hd a span:nth-child(1)movie_item[title]list_item.css(span.title::text).extract_first() # extract_first()从选择器中提取第一个匹配的数据。# 电影评分# content div div.article ol li:nth-child(1) div div.info div.bd div span.rating_nummovie_item[score]list_item.css(span.rating_num::text).extract_first() # extract_first()从选择器中提取第一个匹配的数据。# # 电影影评# content div div.article ol li:nth-child(1) div div.info div.bd p.quote spanmovie_item[quato]list_item.css(span.inq::text).extract_first() # extract_first()从选择器中提取第一个匹配的数据。yield movie_item#把整理得到的数据给管道# 单个页面selector# content div div.article div.paginator a:nth-child(3)# ::attr(href)表示选取元素的href属性。使用.getall()方法可以获取匹配到的所有元素的href属性值并将其存储在一个列表中。hrefs_listmyselector.css(div.paginator a::attr(href))for href in hrefs_list:urlresponse.urljoin(href.extract())# print(url)# 将 Request 对象加入到爬虫的请求队列中以便发送请求,相当于对每个页面执行抓取数据yield Request(urlurl) #注意这个Request是来自scrapy的. from scrapy import Selector,Requestcmd运行 scrapy crawl douban -o douban250.csv3. start_requests的使用 修复一个bug(为什么250条数据变多了)? 我们的起始页面start_urls [https://movie.douban.com/top250] # 起始url 但是我们知道,页面的规则,因为是第一页比较特殊,省略了参数0,实际上第一页的url应该是https://movie.douban.com/top250?start0filter,这导致我们重复2次爬取了第一页的数据,出现了2次肖申克的救赎 解决方案1,直接修改起始页面 start_urls [https://movie.douban.com/top250] # 起始url 改为 start_urls [https://movie.douban.com/top250?start0filter] # 起始url优雅方案2,start_requests一开始就设置要解析的url,不爬取页面url,告诉爬虫要爬的页面有哪些 import scrapy from scrapy import Selector,Request from myscrapy.items import MovieItemclass DoubanSpider(scrapy.Spider):name doubanallowed_domains [movie.douban.com]# 限制或允许访问的域名列表start_urls [https://movie.douban.com/top250] # 起始urldef start_requests(self) :for page in range(10): #10页yield Request(urlfhttps://movie.douban.com/top250?start{page*25}filter)def parse(self, response):myselectorSelector(textresponse.text)# 拿到了所有的li,也就是所有的电影,每一个li代表一个电影,list_items是由250个电影li组成的listlist_itemsmyselector.css(#content div div.article ol li)for list_item in list_items:movie_itemMovieItem()#新建类的对象# 电影标题的 Selector# content div div.article ol li:nth-child(1) div div.info div.hd a span:nth-child(1)movie_item[title]list_item.css(span.title::text).extract_first() # extract_first()从选择器中提取第一个匹配的数据。# 电影评分# content div div.article ol li:nth-child(1) div div.info div.bd div span.rating_nummovie_item[score]list_item.css(span.rating_num::text).extract_first() # extract_first()从选择器中提取第一个匹配的数据。# # 电影影评# content div div.article ol li:nth-child(1) div div.info div.bd p.quote spanmovie_item[quato]list_item.css(span.inq::text).extract_first() # extract_first()从选择器中提取第一个匹配的数据。yield movie_item#把整理得到的数据给管道# # 单个页面selector# # content div div.article div.paginator a:nth-child(3)# # ::attr(href)表示选取元素的href属性。使用.getall()方法可以获取匹配到的所有元素的href属性值并将其存储在一个列表中。# hrefs_listmyselector.css(div.paginator a::attr(href))# for href in hrefs_list:# urlresponse.urljoin(href.extract())# # print(url)# # 将 Request 对象加入到爬虫的请求队列中以便发送请求,相当于对每个页面执行抓取数据# yield Request(urlurl) #注意这个Request是来自scrapy的. from scrapy import Selector,Requestcmd运行 scrapy crawl douban -o douban250_true.csv4. 代码规范 导库的优化 在优化 Python 代码的导入语句时通常会按照一定的规则和顺序进行排序和分组。这些规则和顺序有助于提高代码的可读性和维护性。以下是一般情况下推荐的导入规则和顺序 标准库导入首先导入Python标准库中的模块每个导入语句占一行。 python import os import sys第三方库导入接着导入第三方库或框架的模块每个导入语句占一行。 python import requests import pandas as pd本地应用/模块导入最后导入项目中的自定义模块或应用程序模块。 python from myapp import utils from myapp.models import User空行分隔在不同类型的导入之间加入空行以提高可读性。 按字母顺序排序可以按照字母顺序对每个导入组进行排序或者使用工具自动排序。 避免通配符导入尽量避免使用 from module import * 的方式应该明确导入需要的内容。 别名处理合理使用别名来简化长模块名但不要过度缩写或使用难以理解的别名。用一些约定俗成的别名. import pandas as pd可以使用pycharm的快捷整理你的导包书写规范 关于重写 可以看到警告. Signature of method DoubanSpider.parse() does not match signature of the base method in class Spider这是因为我们的parse继承的DoubanSpider类的scrapy.Spider,我们按住ctrl点击scrapy.Spider前往观察这个被重写的方法,从图中可以看到这几个def都是重写这个spide的方法 class DoubanSpider(scrapy.Spider):def parse(self, response):可以看到被重写的方法原型 统一格式 改为下面代码即可消除警告 def parse(self,response, **kwargs):最终修改后的代码 import scrapy from scrapy import Selector,Request from myscrapy.items import MovieItemclass DoubanSpider(scrapy.Spider):name doubanallowed_domains [movie.douban.com]# 限制或允许访问的域名列表start_urls [https://movie.douban.com/top250] # 起始urldef start_requests(self) :for page in range(10): #10页yield Request(urlfhttps://movie.douban.com/top250?start{page*25}filter)def parse(self,response, **kwargs):myselectorSelector(textresponse.text)# 拿到了所有的li,也就是所有的电影,每一个li代表一个电影,list_items是由250个电影li组成的listlist_itemsmyselector.css(#content div div.article ol li)for list_item in list_items:movie_itemMovieItem()#新建类的对象# 电影标题的 Selector# content div div.article ol li:nth-child(1) div div.info div.hd a span:nth-child(1)movie_item[title]list_item.css(span.title::text).extract_first() # extract_first()从选择器中提取第一个匹配的数据。# 电影评分# content div div.article ol li:nth-child(1) div div.info div.bd div span.rating_nummovie_item[score]list_item.css(span.rating_num::text).extract_first() # extract_first()从选择器中提取第一个匹配的数据。# # 电影影评# content div div.article ol li:nth-child(1) div div.info div.bd p.quote spanmovie_item[quato]list_item.css(span.inq::text).extract_first() # extract_first()从选择器中提取第一个匹配的数据。yield movie_item#把整理得到的数据给管道# # 单个页面selector# # content div div.article div.paginator a:nth-child(3)# # ::attr(href)表示选取元素的href属性。使用.getall()方法可以获取匹配到的所有元素的href属性值并将其存储在一个列表中。# hrefs_listmyselector.css(div.paginator a::attr(href))# for href in hrefs_list:# urlresponse.urljoin(href.extract())# # print(url)# # 将 Request 对象加入到爬虫的请求队列中以便发送请求,相当于对每个页面执行抓取数据# yield Request(urlurl) #注意这个Request是来自scrapy的. from scrapy import Selector,Request总结 大家喜欢的话给个点个关注给大家分享更多计算机专业学生的求学之路 版权声明 发现你走远了mzh原创作品转载必须标注原文链接 Copyright 2024 mzh Crated2024-3-1 欢迎关注 『scrapy爬虫』 专栏持续更新中 欢迎关注 『scrapy爬虫』 专栏持续更新中 『未完待续』
http://www.pierceye.com/news/216491/

相关文章:

  • wordpress 搭建多站点电子商务网站
  • 免费制作网页的网站万网租空间 网站
  • 上海 网站 备案ios开发网站app
  • 网站建设,h5,小程序众安保险
  • 大连网站建设资讯网站seo如何优化
  • 手表网站建设策划西地那非片怎么服用最佳
  • 常德网站设计英文版网站怎么做
  • 权威网站建设网站的工具
  • php手机网站模板厦门网站设计建设
  • 焦作集团网站建设做食品网站需要什么资质
  • 西北电力建设甘肃工程公司网站90设计电商模板
  • 内蒙古网站设计推广网站注册赚佣金
  • 医药类网站建设评价wordpress微信支付模板
  • 如何查看网站空间商手机服务器下载安装
  • 北京响应式网站建设报价英文版网站案例
  • 做爰全过程免费的视频99网站做h5单页的网站
  • 怎么才能百度做网站海外直播
  • 响应式企业网站开发所用的平台酷炫网站首页
  • 西安网站建设全包大发 wordpress
  • html5 网站开发定制做公司网站好处
  • 建站网站教程网站建设工程师职责说明书
  • 新云网站模版宠物网站开发
  • 网站建设面授班网站备案回访电话号码
  • 阿里有做网站网站建设费是宣传费用吗
  • 点广告挣钱网站有哪些网站的建设与预算
  • 佛山新网站建设详细内容手机软件公司
  • 网站建设美词原创怎样建设一个能上传数据的网站
  • 网站建设网站营销做APP必须要有网站么
  • 易企建站咖啡公司网站建设策划书
  • wordpress 不能查看站点网站建设公司软件开