Scrapy的工作原理


 

 

一、Scrapy架構圖

Scrapy框架主要由六大組件組成,它們分別是:
調度器(Scheduler)、下載器(Downloader)、爬蟲(Spider)、中間件(Middleware)、實體管道(Item Pipeline)和Scrapy引擎(Scrapy Engine)

1、Scrapy Engine(引擎): 引擎負責控制數據流在系統的所有組件中流動,並在相應動作發生時觸發事件。

2、Scheduler(調度器): 調度器從引擎接受request並將他們入隊,以便之后引擎請求他們時提供給引擎。

3、Downloader(下載器): 下載器負責獲取頁面數據並提供給引擎,而后提供給spider。

4、Spider(爬蟲): Spider是Scrapy用戶編寫用於分析response並提取item(即獲取到的item)或額外跟進的URL的類。 每個spider負責處理一個特定(或一些)網站。

5、Item Pipeline(管道): Item Pipeline負責處理被spider提取出來的item。典型的處理有清理、 驗證及持久化(例如存儲到數據庫中)。

6、Downloader Middlewares(下載中間件): 下載器中間件是在引擎及下載器之間的特定鈎子(specific hook),處理Downloader傳遞給引擎的response。 其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能。

7、Spider Middlewares(Spider中間件): Spider中間件是在引擎及Spider之間的特定鈎子(specific hook),處理spider的輸入(response)和輸出(items及requests)。 其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能。

二、 scrapy工作流程
 

1)當爬蟲(Spider)要爬取某URL地址的頁面時,使用該URL初始化Request對象提交給引擎(Scrapy Engine),並設置回調函數。 

Spider中初始的Request是通過調用start_requests() 來獲取的。start_requests() 讀取start_urls 中的URL,並以parse為回調函數生成Request 。

2)Request對象進入調度器(Scheduler)按某種算法進行排隊,之后的每個時刻調度器將其出列,送往下載器。

3)下載器(Downloader)根據Request對象中的URL地址發送一次HTTP請求到網絡服務器把資源下載下來,並封裝成應答包(Response)。

4)應答包Response對象最終會被遞送給爬蟲(Spider)的頁面解析函數進行處理。

5)若是解析出實體(Item),則交給實體管道(Item Pipeline)進行進一步的處理。

由Spider返回的Item將被存到數據庫(由某些Item Pipeline處理)或使用Feed exports存入到文件中。

6)若是解析出的是鏈接(URL),則把URL交給調度器(Scheduler)等待抓取。

以上就是Scrapy框架的運行流程,也就是它的工作原理。Request和Response對象是血液,Item是代謝產物。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM