亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Scrapy的架構(gòu)初探

劉明 / 1521人閱讀

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

1. 引言

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

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

2. Scrapy架構(gòu)圖


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

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

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

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

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

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

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

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)度器申請(qǐng)任務(wù),把申請(qǐng)到的任務(wù)交給下載器,在下載器和引擎之間有個(gè)下載器中間件,這是作為一個(gè)開發(fā)框架的必備亮點(diǎn),開發(fā)者可以在這里進(jìn)行一些定制化擴(kuò)展

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)生一個(gè)Response,通過下載器中間件交給引擎。注意,Response和前面的Request的首字母都是大寫,雖然我還沒有看其它Scrapy文檔,但是我猜測(cè)這是Scrapy框架內(nèi)部的事件對(duì)象,也可以推測(cè)出是一個(gè)異步的事件驅(qū)動(dòng)的引擎,對(duì)于高性能、低開銷引擎來(lái)說,這是必須的

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)一個(gè)中間件,給開發(fā)者足夠的發(fā)揮空間

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

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

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ù)不斷地運(yùn)行

4. 接下來(lái)的工作

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

5. 文檔修改歷史

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/45472.html

相關(guān)文章

  • Scrapy入門程序點(diǎn)評(píng)

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

    baiy 評(píng)論0 收藏0
  • Scrapy:python3下第一次運(yùn)行測(cè)試

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

    dack 評(píng)論0 收藏0
  • ScrapySpider更通用

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

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

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

    pkhope 評(píng)論0 收藏0
  • scrapy-redis分布式爬蟲框架詳解

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

    myeveryheart 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

劉明

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<