1. 程式人生 > >Scrapy五大核心組件工作流程

Scrapy五大核心組件工作流程

spi 持久化存儲 行數據 驗證 返回 爬蟲 rap mage 去重

一.Scrapy五大核心組件工作流程

1.核心組件

# 引擎(Scrapy)
對整個系統的數據流進行處理, 觸發事務(框架核心).

# 調度器(Scheduler)
用來接受引擎發過來的請求. 由過濾器過濾重復的url並將其壓入隊列中, 在引擎再次請求的時候返回. 可以想像成一個URL(抓取網頁的網址或者說是鏈接)的優先隊列, 由它來決定下一個要抓取的網址是什麽.

# 下載器(Downloader)
用於下載網頁內容, 並將網頁內容返回給蜘蛛(Scrapy下載器是建立在twisted這個高效的異步模型上的).

# 爬蟲(Spiders)
爬蟲是主要幹活的, 它可以生成url, 並從特定的url中提取自己需要的信息, 即所謂的實體(Item). 用戶也可以從中提取出鏈接, 讓Scrapy繼續抓取下一個頁面.

# 項目管道(Pipeline)
負責處理爬蟲從網頁中抽取的實體, 主要的功能是持久化實體、驗證實體的有效性、清除不需要的信息. 當頁面被爬蟲解析後, 將被發送到項目管道, 並經過幾個特定的次序處理數據.

2.工作流程

技術分享圖片

  1. spider中的url被封裝成請求對象交給引擎(每一個url對應一個請求對象);
  2. 引擎拿到請求對象之後, 將其全部交給調度器;
  3. 調度器拿到所有請求對象後, 通過內部的過濾器過濾掉重復的url, 最後將去重後的所有url對應的請求對象壓入到隊列中, 隨後調度器調度出其中一個請求對象, 並將其交給引擎;
  4. 引擎將調度器調度出的請求對象交給下載器;
  5. 下載器拿到該請求對象去互聯網中下載數據;
  6. 數據下載成功後會被封裝到response中, 隨後response會被交給下載器;
  7. 下載器將response交給引擎;
  8. 引擎將response交給spiders;
  9. spiders拿到response後調用回調方法進行數據解析, 解析成功後產生item, 隨後spiders將item交給引擎;
  10. 引擎將item交給管道, 管道拿到item後進行數據的持久化存儲.

Scrapy五大核心組件工作流程