1. 程式人生 > >【scrapy】流程大致分析

【scrapy】流程大致分析

下一個 跟著 數據 定義 gin war 自定義輸出 -s 結果

Scrapy流程分析

Scrapy 是一個重型爬蟲框架。主要分為5部分:引擎(Engine)、調度器(Scheduler)(這個不太熟悉)、下載器(Downloader) 、爬蟲(Spider)、管道(Item Pipeline)。

  1. Engine是scrapy的核心,主要負責調度各個組件,保證數據流轉。其中包括每五秒自動運行的呼吸函數。
  2. Scheduler負責管理任務、過濾任務、輸出任務的調度器,存儲、去重(中間件??)
  3. Downloader 負責從網頁上下載網頁數據,吐給調度器處——吐給spider處理——吐給pipeline進行存儲處理
  4. Spider 爬蟲
  5. Item Pipeline負責輸出結構化數據,可自定義輸出位置(文件、MYSQL、MangoDB..)
  6. 中間件:除了以上五個部分,還有中間件也是非常重要的。中間件主要分為兩種:Downloader Middlewares(下載中間件)、Spider Middlewares(爬蟲中間件)。主要用於過濾、處理下載的數據或者爬蟲的返回值

流程圖如下:

技術分享圖片

scrapy流程圖(自己瞎畫的)

流程概述:

  1. Engine從爬蟲中獲取初始化請求(種子URL)
  2. Engine把該請求放入Scheduler中, 同時獲取下一個請求(這兩為異步)
  3. Scheduler返回給Engine一個待下載的請求
  4. Engine發送請求給下載器,中間會經過Downloader Middlewares的過濾
  5. 這個請求通過下載器下載完成後,生成一個相應對象(response),這個對象將被返回給Engine,中間需要經過一次Downloader Middlewares。
  6. Engine接受到對象之後,發送給爬蟲,中間會經過一系列的Spider Middlewares。
  7. 在爬蟲中執行相應的自定義邏輯。執行完邏輯之後,爬蟲執行相應的回調方法,處理得到的數據或者新的request請求。將這個結果發送給Engine,中間經過一系列Spider Middlewares
  8. Engine得到返回值,若是requests則再執行2, 若是對象則交由Pipeline處理
  9. 從1開始重復,直到調度器中沒有新的請求。

參考: Scrapy源碼閱讀分析<一>

跟著大佬走了一遍,還是似懂非懂,但是受益匪淺。

自己修為還差得遠..再走幾遍再走幾遍

【scrapy】流程大致分析