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