摘要:引言本文簡單講解一下的架構。沒錯,開源的通用提取器就是要集成到架構中,最看重的是的事件驅動的可擴展的架構。架構圖就是針對特定目標網站編寫的內容提取器,這是在通用網絡爬蟲框架中最需要定制的部分。
1. 引言
本文簡單講解一下Scrapy的架構。沒錯,GooSeeker開源的通用提取器gsExtractor就是要集成到Scrapy架構中,最看重的是Scrapy的事件驅動的可擴展的架構。除了Scrapy,這一批研究對象還包括ScrapingHub,Import.io等,把先進的思路、技術引進來。
請注意,本文不想復述原文內容,而是為了開源Python爬蟲的發展方向找參照,而且以9年來開發網絡爬蟲經驗作為對標,從而本文含有不少筆者主觀評述,如果想讀Scrapy官方原文,請點擊Scrapy官網的Architecture。
2. Scrapy架構圖
Spiders就是針對特定目標網站編寫的內容提取器,這是在通用網絡爬蟲框架中最需要定制的部分。使用Scrapy創建一個爬蟲工程的時候,就會生成一個Spider架子,只需往里面填寫代碼,按照它的運行模式填寫,就能融入Scrapy整體的數據流中。GooSeeker開源網絡爬蟲的目標是節省下程序員一半以上的時間,關鍵就是提高Spider的定義和測試速度,解決方案參看《1分鐘快速生成網頁內容提取器》,讓整個Scrapy爬蟲系統實現快速定制的目標。
Scrapy中的數據流由執行引擎控制,下面的原文摘自Scrapy官網,我根據猜測做了點評,為進一步開發GooSeeker開源爬蟲指示方向:
The Engine gets the first URLs to crawl from the Spider and schedules
them in the Scheduler, as Requests.
URL誰來準備呢?看樣子是Spider自己來準備,那么可以猜測Scrapy架構部分(不包括Spider)主要做事件調度,不管網址的存儲。看起來類似GooSeeker會員中心的爬蟲羅盤,為目標網站準備一批網址,放在羅盤中準備執行爬蟲調度操作。所以,這個開源項目的下一個目標是把URL的管理放在一個集中的調度庫里面
The Engine asks the Scheduler for the next URLs to crawl.
看到這里其實挺難理解的,要看一些其他文檔才能理解透。接第1點,引擎從Spider中把網址拿到以后,封裝成一個Request,交給了事件循環,會被Scheduler收來做調度管理的,暫且理解成對Request做排隊。引擎現在就找Scheduler要接下來要下載的網頁地址
The Scheduler returns the next URLs to crawl to the Engine and the
Engine sends them to the Downloader, passing through the Downloader
Middleware (request direction).
從調度器申請任務,把申請到的任務交給下載器,在下載器和引擎之間有個下載器中間件,這是作為一個開發框架的必備亮點,開發者可以在這里進行一些定制化擴展
Once the page finishes downloading the Downloader generates a Response
(with that page) and sends it to the Engine, passing through the
Downloader Middleware (response direction).
下載完成了,產生一個Response,通過下載器中間件交給引擎。注意,Response和前面的Request的首字母都是大寫,雖然我還沒有看其它Scrapy文檔,但是我猜測這是Scrapy框架內部的事件對象,也可以推測出是一個異步的事件驅動的引擎,對于高性能、低開銷引擎來說,這是必須的
The Engine receives the Response from the Downloader and sends it to
the Spider for processing, passing through the Spider Middleware
(input direction).
再次出現一個中間件,給開發者足夠的發揮空間
The Spider processes the Response and returns scraped items and new
Requests (to follow) to the Engine.
每個Spider順序抓取一個個網頁,完成一個就構造另一個Request事件,開始另一個網頁的抓取
The Engine passes scraped items and new Requests returned by a spider
through Spider Middleware (output direction), and then sends processed
items to Item Pipelines and processed Requests to the Scheduler.
引擎作事件分發
The process repeats (from step 1) until there are no more requests
from the Scheduler.
持續不斷地運行
4. 接下來的工作接下來,我們將進一步研讀Scrapy的文檔,實現GooSeeker開源Python爬蟲與Scrapy的集成
5. 文檔修改歷史2016-06-11:V1.0,首次發布
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/45472.html
摘要:本文大部分內容摘抄自官網的,看到巧妙之處則加了點評。,接下來的工作至此,框架已經明確選定了,接下來,我們將進一步研讀的文檔,研究怎樣把的封裝成需要的。,文檔修改歷史,首次發布 showImg(https://segmentfault.com/img/bVx6ZU); 1,引言 在《Scrapy的架構初探》一文,我基于爬蟲開發的經驗對Scrapy官網文章作了點評和解讀,事件驅動的異步處理...
摘要:,引言的架構初探一文講解了的架構,本文就實際來安裝運行一下爬蟲。第一次運行的測試成功,接下來的工作接下來,我們將使用來實現網絡爬蟲,省掉對每個人工去生成和測試的工作量。,文檔修改歷史,首次發布 1,引言 《Scrapy的架構初探》一文講解了Scrapy的架構,本文就實際來安裝運行一下Scrapy爬蟲。本文以官網的tutorial作為例子,完整的代碼可以在github上下載。 2,運行環...
摘要:而分配任務的是會員中心的爬蟲羅盤,實現集中管理分布執行。開源即時網絡爬蟲項目同樣也要盡量實現通用化。網址和提取規則本來應該硬編碼到中的,現在隔離出來,由會員中心進行管理,那么就很容易做通用了。 showImg(https://segmentfault.com/img/bVyEnS); 1,引言 《Scrapy的架構初探》一文所講的Spider是整個架構中最定制化的一個部件,Spider...
摘要:下載器下載器負責獲取頁面數據并提供給引擎,而后提供給。下載器中間件下載器中間件是在引擎及下載器之間的特定鉤子,處理傳遞給引擎的。一旦頁面下載完畢,下載器生成一個該頁面的,并將其通過下載中間件返回方向發送給引擎。 作者:xiaoyu微信公眾號:Python數據科學知乎:Python數據分析師 在爬蟲的路上,學習scrapy是一個必不可少的環節。也許有好多朋友此時此刻也正在接觸并學習sc...
摘要:分布式爬蟲框架詳解隨著互聯網技術的發展與應用的普及,網絡作為信息的載體,已經成為社會大眾參與社會生活的一種重要信息渠道。下載器中間件位于引擎和下載器之間的框架,主要是處理引擎與下載器之間的請求及響應。 scrapy-redis分布式爬蟲框架詳解 隨著互聯網技術的發展與應用的普及,網絡作為信息的載體,已經成為社會大眾參與社會生活的一種重要信息渠道。由于互聯網是開放的,每個人都可以在網絡上...
閱讀 2335·2021-11-24 09:39
閱讀 3778·2021-11-19 09:40
閱讀 2153·2021-09-27 13:36
閱讀 1897·2019-08-30 15:44
閱讀 390·2019-08-30 13:52
閱讀 2713·2019-08-30 11:13
閱讀 2171·2019-08-29 16:18
閱讀 1755·2019-08-29 15:43