當前位置:
首頁 > 知識 > Python爬蟲從入門到放棄(十二)之 Scrapy框架的架構和原理

Python爬蟲從入門到放棄(十二)之 Scrapy框架的架構和原理

這一篇文章主要是為了對scrapy框架的工作流程以及各個組件功能的介紹

Scrapy目前已經可以很好的在python3上運行Scrapy使用了Twisted作為框架,Twisted有些特殊的地方是它是事件驅動的,並且比較適合非同步的代碼。對於會阻塞線程的操作包含訪問文件、資料庫或者Web、產生新的進程並需要處理新進程的輸出(如運行shell命令)、執行系統層次操作的代碼(如等待系統隊列),Twisted提供了允許執行上面的操作但不會阻塞代碼執行的方法。

Scrapy data flow(流程圖)

Python爬蟲從入門到放棄(十二)之 Scrapy框架的架構和原理

Scrapy數據流是由執行的核心引擎(engine)控制,流程是這樣的:

1、爬蟲引擎ENGINE獲得初始請求開始抓取。

2、爬蟲引擎ENGINE開始請求調度程序SCHEDULER,並準備對下一次的請求進行抓取。

3、爬蟲調度器返回下一個請求給爬蟲引擎。

4、引擎請求發送到下載器DOWNLOADER,通過下載中間件下載網路數據。

5、一旦下載器完成頁面下載,將下載結果返回給爬蟲引擎ENGINE。

6、爬蟲引擎ENGINE將下載器DOWNLOADER的響應通過中間件MIDDLEWARES返回給爬蟲SPIDERS進行處理。

7、爬蟲SPIDERS處理響應,並通過中間件MIDDLEWARES返回處理後的items,以及新的請求給引擎。

8、引擎發送處理後的items到項目管道,然後把處理結果返回給調度器SCHEDULER,調度器計劃處理下一個請求抓取。

9、重複該過程(繼續步驟1),直到爬取完所有的url請求。

各個組件介紹

爬蟲引擎(ENGINE)爬蟲引擎負責控制各個組件之間的數據流,當某些操作觸發事件後都是通過engine來處理。

調度器(SCHEDULER)調度接收來engine的請求並將請求放入隊列中,並通過事件返回給engine。

下載器(DOWNLOADER)通過engine請求下載網路數據並將結果響應給engine。

SpiderSpider發出請求,並處理engine返回給它下載器響應數據,以items和規則內的數據請求(urls)返回給engine。

管道項目(item pipeline)負責處理engine返回spider解析後的數據,並且將數據持久化,例如將數據存入資料庫或者文件。

下載中間件下載中間件是engine和下載器交互組件,以鉤子(插件)的形式存在,可以代替接收請求、處理數據的下載以及將結果響應給engine。

spider中間件spider中間件是engine和spider之間的交互組件,以鉤子(插件)的形式存在,可以代替處理response以及返回給engine items及新的請求集。

如何創建Scrapy項目

創建Scrapy項目

創建scrapy項目的命令是scrapy startproject 項目名,創建一個爬蟲進入到項目目錄scrapy genspider 爬蟲名字 爬蟲的域名,例子如下:

zhaofandeMBP:python_project zhaofan$ scrapy startproject test1
New Scrapy project "test1", using template directory "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/scrapy/templates/project", created in:
/Users/zhaofan/Documents/python_project/test1

You can start your first spider with:
cd test1
scrapy genspider example example.com
zhaofandeMBP:python_project zhaofan$
zhaofandeMBP:test1 zhaofan$ scrapy genspider shSpider hshfy.sh.cn
Created spider "shSpider" using template "basic" in module:
test1.spiders.shSpider

scrapy項目結構

Python爬蟲從入門到放棄(十二)之 Scrapy框架的架構和原理

items.py 負責數據模型的建立,類似於實體類。

middlewares.py 自己定義的中間件。

pipelines.py 負責對spider返回數據的處理。

settings.py 負責對整個爬蟲的配置。

spiders目錄 負責存放繼承自scrapy的爬蟲類。

scrapy.cfg scrapy基礎配置

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優家 的精彩文章:

開啟Sqlserver遠程訪問
Angular表單控制項需要類型和實際值類型不一致時實現雙向綁定
springmvc(四)springmvc的數據校驗的實現

TAG:科技優家 |

您可能感興趣

Python爬蟲框架之pyspider
Python爬蟲學習Scrapy之Spiders
Python爬蟲:把爬取到的數據插入到execl中
分散式爬蟲的部署之Scrapyd對接Docker
Python爬蟲之模擬登錄wechat
網路爬蟲框架Scrapy詳解之Request
如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監控分散式爬蟲
零基礎入門Python爬蟲(一)
websocket與爬蟲
Python爬蟲利器:Requests庫的使用
Python爬蟲的債市小試(二)
使用 shell 構建多進程的 CommandlineFu 爬蟲
Python 爬蟲闖關
Docker安裝,阿里雲加速配置,splash 安裝python 爬蟲
Python爬蟲系列:使用selenium+Edge查詢指定城市天氣情況
Python爬蟲之基本原理
Python爬蟲簡介
Python分散式爬蟲詳解(一)
Python分散式爬蟲詳解(二)
Python 爬蟲:字體反爬處理