python的scrapy,Scrapy爬虫
scrapy的流程
该过程可描述如下:
调度器请求-引擎-下载中间件-下载器
下载器发送请求,得到响应——下载中间件——引擎——爬虫中间件——爬虫。
爬虫提取url地址,组装成请求对象-爬虫中间件-引擎-调度器。
爬虫提取数据-引擎-管道
通过管道进行数据处理和存储。
推荐:Python视频教程
注意:
图中的绿线代表数据的传输。
注意中间件在图中的位置,这个位置决定了它的功能。
注意发动机的位置。之前所有模块都是相互独立的,只和引擎交互。
scrapy中各模块的具体功能
1.scrapy项目实现流程
创建一个垃圾项目:垃圾启动项目项目名称
生成一个爬虫,scrapy genspider,爬虫名称的爬行范围是允许的。
提取数据:改进spider,使用xpath等方法。
保存数据:保存管道中的数据
2. 创建scrapy项目
命令:scrapy startproject项目名称
例子:scrapy startproject myspider
生成的目录和文件结果如下:
settings.py中的关键字段和内涵
用户代理设置ua
robots txt _ observe是否符合robots协议?默认情况下,确实如此。
CONCURRENT_REQUESTS设置并发请求的数量,默认为16。
DOWNLOAD_DELAY下载延迟,默认无延迟。
cookies _ enabled是否开启cookie,即默认开启每个带有前一个cookie的请求。
DEFAULT_REQUEST_HEADERS设置默认请求头。
SPIDER _ middleware爬虫中间件,设置过程和管道一样。
DOWNLOADER _ middleware下载中间件
创建爬虫
命令:scrapy genspider爬虫名称允许爬行域名。
生成的目录和文件结果如下:
完善spider
完善spider意味着通过方法进行数据提取和其他操作:
注意:
response.xpath方法的返回结果是一个类似list的类型,其中包含了selector对象。操作与List相同,但是还有一些额外的方法。
extract()返回包含字符串的列表。
extract_first()返回列表中的第一个字符串。如果列表为空,则不返回任何内容。
Spider中的解析方法必须有
要抓取的url地址必须属于allowed_domains,但start_urls中的url地址没有此限制。
启动爬虫时注意启动位置,在项目路径下启动。
数据传递到pipeline
为什么要用收益率?
把整个功能变成发电机有什么好处?
遍历该函数返回值时,将数据逐个读入内存,不会造成内存瞬间占用过多。
Python 3中的range与python2中的xrange相同。
注意:
Yield只能传递对象:BaseItem、Request、dict、None
6. 完善pipeline
管道在设置中可以打开多个,为什么需要打开多个?
不同的管道可以处理不同爬虫的数据。
不同的管道可以执行不同的数据处理操作,例如一个用于数据清理,一个用于数据保存。
pipeline使用注意点
使用前需要在设置中打开。
设置中管道的键表示位置(即管道在工程中的位置可以自定义),值表示离发动机的距离。数据越接近,越早过去。
当有多条管道时,process_item的方法必须返回item,否则后一条管道得到的数据为None。
管道中的process_item方法必须可用,否则不能接受和处理项目。
process _ item方法接受项目和蜘蛛,其中蜘蛛表示当前传递项目的蜘蛛。
本文来自python教程专栏,欢迎学习!以上就是Python crawler -scrapy的介绍和使用细节。更多信息请关注盛行IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。