Scrapy網絡爬蟲:框架組成與工作原理-組件與數據流

Scrapy網絡爬蟲:框架組成與工作原理-組件與數據流

Scrapy組件與數據流

1. Scrapy組件

  • ENGINE:引擎,是Scrpy框架的核心,其他所有的組件都是在其控制寫工作的。引擎屬於內部組件,通常並不需要開發者去實現。

  • SCHEDULER:調度器負責對SPIDER提交的下載請求進行調度。調度器也是內部組件

  • DOWNLOADER:下載器,負責下載頁面,即發送HTTP請求和接收HTTP響應。下載器也是內部組件

  • SPIDER:爬蟲,負責從頁面解析和提取數據,以及生成新的HTTP請求。爬蟲屬於用戶組件,必須由開發者去實現。

  • MIDDLEWARE:中間件,負責對HTTP請求和接收HTTP響應進行處理。中間件屬於

    可選組件,開發者可根據需要開發。

  • ITEM PIPELINE:數據管道,負責對爬取的數據進行處理,如去重、寫入數據庫等,數據管道也是可選組件

對於開發者來說,Spider是最核心的組件,Scrapy項目的開發都是圍繞著Spider展開的。

2. Scrapy框架數據流

Scrapy數據流中涉及到三種對象:

  • Request:Scrapy框架中的HTTP請求對象。

  • Response:Scrapy框架中的HTTP響應框架。

  • Item:從頁面中提取的數據對象。

以上幾種對象在框架中的流動過程:

  • 當Spider要爬取某URL地址的頁面時,首先用該URL構造一個Request對象,提交給Engine(圖中1)

  • 隨後Request對象隨後進入Scheduler,按照某種調度算法排隊,之後的某個時候從隊列中出來,遊Engine提交給Downloader(圖中的2、3、4)。

  • Downloader根據Request對象中的URL地址發送一次HTTP請求到目標網站服務器,並接受服務器返回的HTTP響應,構建一個Response對象(圖中的5),並有Engine將Response提交給Spider(圖中的6)

  • Spider提取Response中的數據,構造出Item對象或者根據新的連接構造出Request對象。分別由Engine提交給Item Pipeline或者Scheduler(圖中的7、8)

  • 這個過程反覆進行,直至爬完所有的數據。同時,數據對象在出入Spider和Downloader時可能會經過Middleware進行進一步的處理。

用一個不太恰當的比喻,Scrapy的組件可以比作人的器官,Request和Response對象是血液,Item則是代謝產物。


分享到:


相關文章: