Scrapy 架構
- Scrapy是用純Python實作一個為了爬取網站資料、提取結構性資料而編寫的應用架構,用途非常廣泛。
- 架構的力量,使用者隻需要定制開發幾個子產品就可以輕松的實作一個爬蟲,用來抓取網頁内容以及各種圖檔,非常之友善。
- Scrapy 使用了 Twisted
(其主要對手是Tornado)異步網絡架構來處理網絡通訊,可以加快我們的下載下傳速度,不用自己去實作異步架構,并且包含了各種中間件接口,可以靈活的完成各種需求。['twɪstɪd]
Scrapy架構圖(綠線是資料流向):

-
: 負責Scrapy Engine(引擎)
、Spider
、ItemPipeline
、Downloader
中間的通訊,信号、資料傳遞等。Scheduler
-
: 它負責接受Scheduler(排程器)
發送過來的Request請求,并按照一定的方式進行整理排列,入隊,當引擎
需要時,交還給引擎
。引擎
-
:負責下載下傳Downloader(下載下傳器)
發送的所有Requests請求,并将其擷取到的Responses交還給Scrapy Engine(引擎)
,由Scrapy Engine(引擎)
交給引擎
來處理,Spider
-
:它負責處理所有Responses,從中分析提取資料,擷取Item字段需要的資料,并将需要跟進的URL送出給Spider(爬蟲)
,再次進入引擎
,Scheduler(排程器)
-
:它負責處理Item Pipeline(管道)
中擷取到的Item,并進行進行後期處理(詳細分析、過濾、存儲等)的地方.Spider
-
:你可以當作是一個可以自定義擴充下載下傳功能的元件。Downloader Middlewares(下載下傳中間件)
-
:你可以了解為是一個可以自定擴充和操作Spider Middlewares(Spider中間件)
和引擎
中間Spider
的功能元件(比如進入通信
的Responses;和從Spider
出去的Requests)Spider
制作 Scrapy 爬蟲 一共需要4步:
- 建立項目 (scrapy startproject xxx):建立一個新的爬蟲項目
- 明确目标 (編寫items.py):明确你想要抓取的目标
- 制作爬蟲 (spiders/xxspider.py):制作爬蟲開始爬取網頁
- 存儲内容 (pipelines.py):設計管道存儲爬取内容