scrapy工作流程


一:scrapy 工作原理介绍:

  千言万语,不如一张图来的清晰:

 

 

 

解释说明:

1、从优先级队列中获取request对象,交给engine

2、engine将request对象交给下载器下载,期间会通过downloadmiddleware的process_request方法

3、下载器完成下载,获得response对象,将该对象交给engine,期间会经过downloadmiddleware的process_response( )方法

4、engine将获得的response对象交给spider进行解析,期间会经过spidermiddleware的process_spider_input()的方法

5、spider解析下载器下下来的response,返回item或是links(url)

6、item或者link经过spidermiddleware的process_spider_out( )方法,交给engine

7、engine将item交给item pipeline ,将links交给调度器

8、在调度器中,先将requests对象利用scrapy内置的指纹函数生成一个指纹4

9、如果requests对象中的don't filter参数设置为False,并且该requests对象的指纹不在信息指纹的队列中,那么就把该request对象放到优先级队列中

循环以上操作

 

 

中间件:

中间件主要存在两个地方,从图片当中我们可以看到:

spider 与 engine 之间:

  主要功能是在爬虫运行过程中进行一些处理.

download 与 engine 之间 :
  主要功能在请求到网页后,页面被下载时进行一些处理.

 

作用:

1.Spider Middleware有以下几个函数被管理:
- process_spider_input 接收一个response对象并处理,

位置是Downloader-->process_spider_input-->Spiders(Downloader和Spiders是scrapy官方结构图中的组件)

- process_spider_exception spider出现的异常时被调用

- process_spider_output 当Spider处理response返回result时,该方法被调用

- process_start_requests 当spider发出请求时,被调用

2.Downloader Middleware有以下几个函数被管理
  - process_request request通过下载中间件时,该方法被调用

  - process_response 下载结果经过中间件时被此方法处理

  - process_exception 下载过程中出现异常时被调用

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM