一、Scrapy 框架
Scrapy 是?純 Python 實作?個為了爬取?站資料、提取結構性資料?撰寫的應?框架,?途?常?泛,
框架的?量,?戶只需要定制開發?個模塊就可以輕松的實作?個爬?,?來抓取??內容以及各種圖?,?常之?便,
Scrapy 使?了 Twisted ['tw?st?d] (其主要對?是 Tornado)異步?絡框架來處理?絡通訊,可以加快我們的下載速度,不???去實作異步框架,并且包含了各種中間件接?,可以靈活的完成各種需求,
Scrapy 架構圖(綠線是資料流向):

- Scrapy Engine(引擎) : 負責 Spider 、 ItemPipeline 、 Downloader 、 Scheduler
中間的通訊, 信號、資料傳遞等, - Scheduler(調度器) : 它負責接受 引擎 發送過來的 Request 請求,并按照?定的?式進?整理排列,?隊,當引擎需要時,交還給 引擎 ,
- Downloader(下載器) :負責下載 Scrapy Engine(引擎) 發送的所有Requests 請求,并將其獲取到的Responses 交還給 ScrapyEngine(引 擎) ,由 引擎 交給 Spider 來處理,
- Spider(爬?) :它負責處理所有 Responses,從中分析提取資料,獲取Item 欄位需要的資料,并將需要跟進的 URL 提交給引擎 ,再次進? Scheduler(調度器),
- Item Pipeline(管道) :它負責處理 Spider 中獲取到的 Item,并進?進?后期處理(詳細分析、過濾、存盤等)的地?,
- Downloader Middlewares(下載中間件) :你可以當作是?個可以?定義擴展下載功能的組件,
- Spider Middlewares(Spider 中間件) :你可以理解為是?個可以?定擴展和操作 引擎 和 Spider 中間 通信的功能組件(?如進? Spider 的Responses;和從 Spider 出去的 Requests)
二、Scrapy 的運作流程
代碼寫好,程式開始運?...
- 引擎 :Hi! Spider , 你要處理哪?個?站?
- Spider :??要我處理 xxxx.com,
- 引擎 :你把第?個需要處理的 URL 給我吧,
- Spider :給你,第?個 URL 是 xxxxxxx.com,
- 引擎 :Hi! 調度器 ,我這有 request 請求你幫我排序?隊?下,
- 調度器 :好的,正在處理你等?下,
- 引擎 :Hi! 調度器 ,把你處理好的 request 請求給我,
- 調度器 :給你,這是我處理好的 request
- 引擎 :Hi!下載器,你按照??的 下載中間件 的設定幫我下載?下這個 request 請求
- 下載器 :好的!給你,這是下載好的東?,(如果失敗:sorry,這個request 下載失敗了,然后 引擎 告訴 調度器 ,這個 request 下載失敗了,你記錄?下,我們待會?再下載)
- 引擎 :Hi! Spider ,這是下載好的東?,并且已經按照??的 下載中 間 件 處理過了,你??處理?下(注意!這?responses 默認是交給 defparse() 這個函式處理的)
- Spider :(處理完畢資料之后對于需要跟進的 URL),Hi! 引擎 , 我 這?有兩個結果,這個是我需要跟進的 URL,還有這個是我獲取到的 Item 資料,
- 引擎 :Hi ! 管道 我這?有個 item 你幫我處理?下! 調度器 !這是需 要跟進 URL 你幫我處理下,然后從第四步開始回圈,直到獲取完??需要全部資訊,
- 管道``調度器 :好的,現在就做!
注意!只有當 調度器 中不存在任何 request 了,整個程式才會停?,(也就是說,對于下載失敗的 URL,Scrapy 也會重新下載,)
制作 Scrapy 爬? ?共需要 4 步:
- 新建項? (scrapy startproject xxx):新建?個新的爬?項?
- 明確?標 (撰寫 items.py):明確你想要抓取的?標 制作爬?
- (spiders/xxspider.py):制作爬?開始爬取??
- 存盤內容 (pipelines.py):設計管道存盤爬取內容
點擊獲取 爬蟲視頻教程和爬蟲學習資料,
Scrapy 框架官??址:http://doc.scrapy.org/en/latest Scrapy 中?維護站
點:http://scrapychs.readthedocs.io/zh_CN/latest/index.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/14006.html
標籤:Python
上一篇:windows下搭建虛擬環境
