Scrapy架構及資料流圖簡介
Scrapy 是一個為了爬取網站資料,提取結構性資料而編寫的應用框架。 可以應用在包括資料探勘、資訊處理或儲存歷史資料等一系列的程式中。本文著重介紹 Scrapy 架構及其元件之間的互動。
Scrapy 元件介紹
- Scrapy Engine 引擎負責控制資料流在系統中所有元件中流動,並在相應動作發生時觸發事件。 詳細內容檢視下面的資料流(Data Flow)部分。
- 排程器(Scheduler) 排程器從引擎接受request並將他們入隊,以便之後引擎請求他們時提供給引擎。
- 下載器(Downloader) 下載器負責獲取頁面資料並提供給引擎,而後提供給spider。
- Spiders Spider 是 Scrapy使用者編寫用於分析response並提取item(即獲取到的item)或額外跟進的URL的類。 每個spider負責處理一個特定(或一些)網站。
- Item Pipeline Item Pipeline負責處理被spider提取出來的item。典型的處理有清理、 驗證及持久化(例如存取到資料庫中)。
- 下載器中介軟體(Downloader middlewares) 下載器中介軟體是在引擎及下載器之間的特定鉤子(specific hook),處理Downloader傳遞給引擎的response。 其提供了一個簡便的機制,通過插入自定義程式碼來擴充套件Scrapy功能。
- Spider中介軟體(Spider middlewares) Spider中介軟體是在引擎及Spider之間的特定鉤子(specific hook),處理spider的輸入(response)和輸出(items及requests)。 其提供了一個簡便的機制,通過插入自定義程式碼來擴充套件Scrapy功能。
資料流(Data flow)
Scrapy中的資料流由執行引擎控制,其過程如下:
- 引擎開啟一個網站(open a domain),找到處理該網站的Spider並向該spider請求第一個要爬取的URL(s)。
- 引擎從Spider中獲取到第一個要爬取的URL並在排程器(Scheduler)以Request排程。
- 引擎向排程器請求下一個要爬取的URL。
- 排程器返回下一個要爬取的URL給引擎,引擎將URL通過下載中介軟體(請求(request)方向)轉發給下載器(Downloader)。
- 一旦頁面下載完畢,下載器生成一個該頁面的Response,並將其通過下載中介軟體(返回(response)方向)傳送給引擎。
- 引擎從下載器中接收到Response並通過Spider中介軟體(輸入方向)傳送給Spider處理。
- Spider處理Response並返回爬取到的Item及(跟進的)新的Request給引擎。
- 引擎將(Spider返回的)爬取到的Item給Item Pipeline,將(Spider返回的)Request給排程器。
- (從第二步)重複直到排程器中沒有更多地request,引擎關閉該網站。
事件驅動網路(Event-driven networking)
Scrapy基於事件驅動網路框架 Twisted 編寫。因此,Scrapy基於併發性考慮由非阻塞(即非同步)的實現。
關於非同步程式設計及Twisted更多的內容請檢視下列連結:
原文釋出時間:2017-07-23
相關文章
- 資料湖架構及概念簡介架構
- Android 圖形架構簡介Android架構
- 架構之:資料流架構架構
- 資料庫 Mysql 邏輯架構簡介資料庫MySql架構
- 大資料分類和架構簡介大資料架構
- Scrapy框架簡介框架
- 演算法與資料結構——圖簡介演算法資料結構
- Hive簡介、應用場景及架構原理Hive架構
- 資料結構簡介資料結構
- Java IO流字元流簡介及基本使用Java字元
- 軟體架構簡介架構
- 淺談hdfs架構與資料流架構
- ffmpeg資料結構簡介資料結構
- Redis資料結構簡介Redis資料結構
- 按照業務領域畫資料架構圖 業務架構 資料架構架構
- 四種JavaEE架構簡介Java架構
- Flownet 介紹 及光流的簡單介紹
- HBase 系統架構及資料結構架構資料結構
- Python爬蟲之scrapy框架簡介及環境安裝Python爬蟲框架
- BPAAS 簡單架構圖架構
- scrapy的簡介與安裝
- 資料架構建設方法及案例架構
- Slack系統架構簡介 - jinlow架構
- Redux技術架構簡介(一)Redux架構
- spring cloud架構整合-springcloud簡介SpringCloud架構GC
- TiDB簡介與整體架構TiDB架構
- 資料結構中樹形結構簡介資料結構
- 圖資料庫基礎簡介 -KDnuggets資料庫
- EventBridge 事件匯流排及 EDA 架構解析事件架構
- 大資料架構如何做到流批一體?大資料架構
- Sentry 監控 - Snuba 資料中臺架構(Data Model 簡介)架構
- Sentry 監控 - Snuba 資料中臺架構(Query Processing 簡介)架構
- 人工智慧中代理架構簡介人工智慧架構
- 一. SpringCloud簡介與微服務架構SpringGCCloud微服務架構
- WebServiceCXF與Restful架構風格簡介WebREST架構
- 崑崙分散式資料庫架構介紹分散式資料庫架構
- Redis 學習-資料結構基本簡介Redis資料結構
- 【資料結構和演算法】Trie樹簡介及應用詳解資料結構演算法