码迷,mamicode.com
首页 > 其他好文 > 详细

scrapy工作流程

时间:2018-08-25 19:03:15      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:请求   result   组件   优先级队列   width   接收   tput   工作流   图片   

一: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 下载过程中出现异常时被调用

 

scrapy工作流程

标签:请求   result   组件   优先级队列   width   接收   tput   工作流   图片   

原文地址:https://www.cnblogs.com/sharepy/p/9534597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!