Scrapy是一個python的爬蟲架構,可是這個架構的工做原理是怎麼的呢?也就是說,Scrapy的框架是怎麼樣的。網上已經有不少博文說這個框架了,可是我想用另一種方法來說述。python
話說有一天,我想寫一個爬蟲。爬蟲,說白了就是去互聯網上下載東西,而後提取下載下來的頁面中有用的字段。這件事怎麼說也是一個工程吧,做爲一個工程師,好吧,就是一個碼農,你的模塊化思想應該體現出來了。架構
下載東西和提取頁面中須要的字段就是兩個模塊了。咱們命名爲Downloader和Dealer。框架
提取出來東西了,咱們得考慮怎麼存儲吧,因此咱們再引入一個模塊,用來後續加工。加工數據流就像是數據流經過管道同樣,因此,咱們把這個對數據作後期存儲、驗證的模塊叫作Pipline。scrapy
咱們的框架創建好了,爬蟲開始出發了!ide
爬蟲很開心,可是,不一下子,爬蟲就不知道該往哪裏去了,由於爬了一個網頁後,沒有人告訴這個爬蟲下一步應該去哪裏。咱們的Dealer模塊是能夠提取「下一頁」這樣的連接的,可是他並無安排給爬蟲去進行下一次爬取的任務。因此,咱們須要一個調度系統,Dealer模塊一有「下一頁」就把網頁地址給這個調度器,調度器再去安排給Downloader去下載。這個調度器模塊咱們就叫作Scheduler。模塊化
最後,這四個模塊須要協調工做,因此咱們再設立一個用來統領的模塊,叫作Engine。spa
鐺鐺鐺鐺,這是scrapy官方的框架圖,若是把咱們本身意淫出來的模塊中的Dealer改爲Spider,兩個框架就同樣了!.net
Scrapy和咱們以前想的同樣哦!這裏的Downloader Middleware和Spider Middleware就是數據傳輸的中間件,把他們當作管道就能夠了,只不過咱們能夠在這兩個管道里面作點小動做罷了。
中間件
本文同步分享在 博客「錢塘小甲子」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。blog