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架構
- 大資料架構和模式(一)——大資料分類和架構簡介大資料架構模式
- IO流簡介及方法
- Scrapy框架簡介框架
- ELK架構簡介架構
- 按照業務領域畫資料架構圖 業務架構 資料架構架構
- Hive簡介、應用場景及架構原理Hive架構
- 資料結構簡介資料結構
- 淺談hdfs架構與資料流架構
- Java IO流字元流簡介及基本使用Java字元
- 軟體架構簡介架構
- 微服務架構簡介微服務架構
- Flume(一):簡介架構架構
- postgresql相關開源軟體及架構簡介SQL架構
- hadoop生態圈綜合簡介及架構案例Hadoop架構
- ffmpeg資料結構簡介資料結構
- Redis資料結構簡介Redis資料結構
- HBase 系統架構及資料結構架構資料結構
- 四種JavaEE架構簡介Java架構
- 微服務架構模式簡介微服務架構模式
- Microservice架構模式簡介ROS架構模式
- 資料流架構學習筆記(二)-Redux架構筆記Redux
- 資料流架構學習筆記(一)-Flux架構筆記UX
- scrapy的簡介與安裝
- 資料架構建設方法及案例架構
- 資料流圖
- Redux技術架構簡介(一)Redux架構
- Java異常簡介及其架構Java架構
- 崑崙分散式資料庫架構介紹分散式資料庫架構
- 資料結構中樹形結構簡介資料結構
- 大資料架構如何做到流批一體?大資料架構
- Python爬蟲之scrapy框架簡介及環境安裝Python爬蟲框架
- Scrapy框架的架構原理解析框架架構
- Python scrapy爬蟲框架簡介Python爬蟲框架