成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Scrapy的架構(gòu)初探

劉明 / 1478人閱讀

摘要:引言本文簡單講解一下的架構(gòu)。沒錯,開源的通用提取器就是要集成到架構(gòu)中,最看重的是的事件驅(qū)動的可擴展的架構(gòu)。架構(gòu)圖就是針對特定目標(biāo)網(wǎng)站編寫的內(nèi)容提取器,這是在通用網(wǎng)絡(luò)爬蟲框架中最需要定制的部分。

1. 引言

本文簡單講解一下Scrapy的架構(gòu)。沒錯,GooSeeker開源的通用提取器gsExtractor就是要集成到Scrapy架構(gòu)中,最看重的是Scrapy的事件驅(qū)動的可擴展的架構(gòu)。除了Scrapy,這一批研究對象還包括ScrapingHub,Import.io等,把先進的思路、技術(shù)引進來。

請注意,本文不想復(fù)述原文內(nèi)容,而是為了開源Python爬蟲的發(fā)展方向找參照,而且以9年來開發(fā)網(wǎng)絡(luò)爬蟲經(jīng)驗作為對標(biāo),從而本文含有不少筆者主觀評述,如果想讀Scrapy官方原文,請點擊Scrapy官網(wǎng)的Architecture。

2. Scrapy架構(gòu)圖


Spiders就是針對特定目標(biāo)網(wǎng)站編寫的內(nèi)容提取器,這是在通用網(wǎng)絡(luò)爬蟲框架中最需要定制的部分。使用Scrapy創(chuàng)建一個爬蟲工程的時候,就會生成一個Spider架子,只需往里面填寫代碼,按照它的運行模式填寫,就能融入Scrapy整體的數(shù)據(jù)流中。GooSeeker開源網(wǎng)絡(luò)爬蟲的目標(biāo)是節(jié)省下程序員一半以上的時間,關(guān)鍵就是提高Spider的定義和測試速度,解決方案參看《1分鐘快速生成網(wǎng)頁內(nèi)容提取器》,讓整個Scrapy爬蟲系統(tǒng)實現(xiàn)快速定制的目標(biāo)。

3. Scrapy的數(shù)據(jù)流(Data Flow)

Scrapy中的數(shù)據(jù)流由執(zhí)行引擎控制,下面的原文摘自Scrapy官網(wǎng),我根據(jù)猜測做了點評,為進一步開發(fā)GooSeeker開源爬蟲指示方向:

The Engine gets the first URLs to crawl from the Spider and schedules
them in the Scheduler, as Requests.

URL誰來準(zhǔn)備呢?看樣子是Spider自己來準(zhǔn)備,那么可以猜測Scrapy架構(gòu)部分(不包括Spider)主要做事件調(diào)度,不管網(wǎng)址的存儲。看起來類似GooSeeker會員中心的爬蟲羅盤,為目標(biāo)網(wǎng)站準(zhǔn)備一批網(wǎng)址,放在羅盤中準(zhǔn)備執(zhí)行爬蟲調(diào)度操作。所以,這個開源項目的下一個目標(biāo)是把URL的管理放在一個集中的調(diào)度庫里面

The Engine asks the Scheduler for the next URLs to crawl.

看到這里其實挺難理解的,要看一些其他文檔才能理解透。接第1點,引擎從Spider中把網(wǎng)址拿到以后,封裝成一個Request,交給了事件循環(huán),會被Scheduler收來做調(diào)度管理的,暫且理解成對Request做排隊。引擎現(xiàn)在就找Scheduler要接下來要下載的網(wǎng)頁地址

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).

從調(diào)度器申請任務(wù),把申請到的任務(wù)交給下載器,在下載器和引擎之間有個下載器中間件,這是作為一個開發(fā)框架的必備亮點,開發(fā)者可以在這里進行一些定制化擴展

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).

下載完成了,產(chǎn)生一個Response,通過下載器中間件交給引擎。注意,Response和前面的Request的首字母都是大寫,雖然我還沒有看其它Scrapy文檔,但是我猜測這是Scrapy框架內(nèi)部的事件對象,也可以推測出是一個異步的事件驅(qū)動的引擎,對于高性能、低開銷引擎來說,這是必須的

The Engine receives the Response from the Downloader and sends it to
the Spider for processing, passing through the Spider Middleware
(input direction).

再次出現(xiàn)一個中間件,給開發(fā)者足夠的發(fā)揮空間

The Spider processes the Response and returns scraped items and new
Requests (to follow) to the Engine.

每個Spider順序抓取一個個網(wǎng)頁,完成一個就構(gòu)造另一個Request事件,開始另一個網(wǎng)頁的抓取

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.

引擎作事件分發(fā)

The process repeats (from step 1) until there are no more requests
from the Scheduler.

持續(xù)不斷地運行

4. 接下來的工作

接下來,我們將進一步研讀Scrapy的文檔,實現(xiàn)GooSeeker開源Python爬蟲與Scrapy的集成

5. 文檔修改歷史

2016-06-11:V1.0,首次發(fā)布

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/45472.html

相關(guān)文章

  • Scrapy入門程序點評

    摘要:本文大部分內(nèi)容摘抄自官網(wǎng)的,看到巧妙之處則加了點評。,接下來的工作至此,框架已經(jīng)明確選定了,接下來,我們將進一步研讀的文檔,研究怎樣把的封裝成需要的。,文檔修改歷史,首次發(fā)布 showImg(https://segmentfault.com/img/bVx6ZU); 1,引言 在《Scrapy的架構(gòu)初探》一文,我基于爬蟲開發(fā)的經(jīng)驗對Scrapy官網(wǎng)文章作了點評和解讀,事件驅(qū)動的異步處理...

    baiy 評論0 收藏0
  • Scrapy:python3下第一次運行測試

    摘要:,引言的架構(gòu)初探一文講解了的架構(gòu),本文就實際來安裝運行一下爬蟲。第一次運行的測試成功,接下來的工作接下來,我們將使用來實現(xiàn)網(wǎng)絡(luò)爬蟲,省掉對每個人工去生成和測試的工作量。,文檔修改歷史,首次發(fā)布 1,引言 《Scrapy的架構(gòu)初探》一文講解了Scrapy的架構(gòu),本文就實際來安裝運行一下Scrapy爬蟲。本文以官網(wǎng)的tutorial作為例子,完整的代碼可以在github上下載。 2,運行環(huán)...

    dack 評論0 收藏0
  • ScrapySpider更通用

    摘要:而分配任務(wù)的是會員中心的爬蟲羅盤,實現(xiàn)集中管理分布執(zhí)行。開源即時網(wǎng)絡(luò)爬蟲項目同樣也要盡量實現(xiàn)通用化。網(wǎng)址和提取規(guī)則本來應(yīng)該硬編碼到中的,現(xiàn)在隔離出來,由會員中心進行管理,那么就很容易做通用了。 showImg(https://segmentfault.com/img/bVyEnS); 1,引言 《Scrapy的架構(gòu)初探》一文所講的Spider是整個架構(gòu)中最定制化的一個部件,Spider...

    MartinDai 評論0 收藏0
  • Python爬蟲之Scrapy學(xué)習(xí)(基礎(chǔ)篇)

    摘要:下載器下載器負(fù)責(zé)獲取頁面數(shù)據(jù)并提供給引擎,而后提供給。下載器中間件下載器中間件是在引擎及下載器之間的特定鉤子,處理傳遞給引擎的。一旦頁面下載完畢,下載器生成一個該頁面的,并將其通過下載中間件返回方向發(fā)送給引擎。 作者:xiaoyu微信公眾號:Python數(shù)據(jù)科學(xué)知乎:Python數(shù)據(jù)分析師 在爬蟲的路上,學(xué)習(xí)scrapy是一個必不可少的環(huán)節(jié)。也許有好多朋友此時此刻也正在接觸并學(xué)習(xí)sc...

    pkhope 評論0 收藏0
  • scrapy-redis分布式爬蟲框架詳解

    摘要:分布式爬蟲框架詳解隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展與應(yīng)用的普及,網(wǎng)絡(luò)作為信息的載體,已經(jīng)成為社會大眾參與社會生活的一種重要信息渠道。下載器中間件位于引擎和下載器之間的框架,主要是處理引擎與下載器之間的請求及響應(yīng)。 scrapy-redis分布式爬蟲框架詳解 隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展與應(yīng)用的普及,網(wǎng)絡(luò)作為信息的載體,已經(jīng)成為社會大眾參與社會生活的一種重要信息渠道。由于互聯(lián)網(wǎng)是開放的,每個人都可以在網(wǎng)絡(luò)上...

    myeveryheart 評論0 收藏0

發(fā)表評論

0條評論

劉明

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<