Scrapy的工作流程
从优先级队列中获取request对象,交给engine
engine将request对象交给下载器下载,期间会通过downloadmiddleware的process_request方法
下载器完成下载,获得response对象,将该对象交给engine,期间会经过downloadmiddleware的process_response( )方法
engine将获得的response对象交给spider进行解析,期间会经过spidermiddleware的process_spider_input()的方法
spider解析下载器下下来的response,返回item或是links(url)
item或者link经过spidermiddleware的process_spider_out( )方法,交给engine
engine将item交给item pipeline ,将links交给调度器
在调度器中,先将requests对象利用scrapy内置的指纹函数生成一个指纹4
如果requests对象中的don't filter参数设置为False,并且该requests对象的指纹不在信息指纹的队列中,那么就把该request对象放到优先级队列中
循环以上操作
各个文件的作用
pipelines.py:
数据清洗(处理数据)
存储(把数据存储起来,也可以是直接打印在控制台)
爬虫文件:
寻找item.py里面的数据并yield出去
回调爬虫的解析函数完成下一次爬取...(循环)
item.py:
- 写入所需要的数据
*部分参考自https://www.cnblogs.com/sharepy/p/9534597.html