Scrapy五大組件介紹

Scrapy框架主要由五大組件組成,它們分別是調(diào)度器(Scheduler)、下載器(Downloader)、爬蟲(Spider)和實(shí)體管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。下面我們分別介紹各個(gè)組件的作用。

調(diào)度器

調(diào)度器,說白了可以想像成一個(gè)URL(抓取網(wǎng)頁的網(wǎng)址或者說是鏈接)的優(yōu)先隊(duì)列,由它來決定下一個(gè)要抓取的網(wǎng)址是什么,同時(shí)去除重復(fù)的網(wǎng)址(不做無用功)。用戶可以跟據(jù)自己的需求定制調(diào)度器。

下載器

下載器,是所有組件中負(fù)擔(dān)最大的,它用于高速地下載網(wǎng)絡(luò)上的資源。Scrapy的下載器代碼不會(huì)太復(fù)雜,但效率高,主要的原因是Scrapy下載器是建立在twisted這個(gè)高效的異步模型上的(其實(shí)整個(gè)框架都在建立在這個(gè)模型上的)。

爬蟲

爬蟲,是用戶最關(guān)心的部份。用戶定制自己的爬蟲,用于從特定的網(wǎng)頁中提取自己需要的信息,即所謂的實(shí)體(Item)。用戶也可以從中提取出鏈接,讓Scrapy繼續(xù)抓取下一個(gè)頁面。

實(shí)體管道

實(shí)體管道,用于處理爬蟲提取的實(shí)體。主要的功能是持久化實(shí)體、驗(yàn)證實(shí)體的有效性、清除不需要的信息。

Scrapy引擎

Scrapy引擎是整個(gè)框架的核心。它用來控制調(diào)試器、下載器、爬蟲。實(shí)際上,引擎相當(dāng)于計(jì)算機(jī)的CPU,它控制著整個(gè)流程。

image.png

Scrapy運(yùn)行流程大概如下:

首先,引擎從調(diào)度器中取出一個(gè)鏈接(URL)用于接下來的抓取

引擎把URL封裝成一個(gè)請(qǐng)求(Request)傳給下載器,下載器把資源下載下來,并封裝成應(yīng)答包(Response)

然后,爬蟲解析Response

若是解析出實(shí)體(Item),則交給實(shí)體管道進(jìn)行進(jìn)一步的處理。

若是解析出的是鏈接(URL),則把URL交給Scheduler等待抓取

數(shù)據(jù)在整個(gè)Scrapy的流向:

程序運(yùn)行的時(shí)候,

引擎:Hi!Spider, 你要處理哪一個(gè)網(wǎng)站?

Spiders:我要處理23wx.com

引擎:你把第一個(gè)需要的處理的URL給我吧。

Spiders:給你第一個(gè)URL是XXXXXXX.com

引擎:Hi!調(diào)度器,我這有request你幫我排序入隊(duì)一下。

調(diào)度器:好的,正在處理你等一下。

引擎:Hi!調(diào)度器,把你處理好的request給我,

調(diào)度器:給你,這是我處理好的request

引擎:Hi!下載器,你按照下載中間件的設(shè)置幫我下載一下這個(gè)request

下載器:好的!給你,這是下載好的東西。(如果失?。翰缓靡馑?,這個(gè)request下載失敗,然后引擎告訴調(diào)度器,這個(gè)request下載失敗了,你記錄一下,我們待會(huì)兒再下載。)

引擎:Hi!Spiders,這是下載好的東西,并且已經(jīng)按照Spider中間件處理過了,你處理一下(注意!這兒responses默認(rèn)是交給def parse這個(gè)函數(shù)處理的)

Spiders:(處理完畢數(shù)據(jù)之后對(duì)于需要跟進(jìn)的URL),Hi!引擎,這是我需要跟進(jìn)的URL,將它的responses交給函數(shù) def xxxx(self, responses)處理。還有這是我獲取到的Item。

引擎:Hi !Item Pipeline
我這兒有個(gè)item你幫我處理一下!調(diào)度器!這是我需要的URL你幫我處理下。然后從第四步開始循環(huán),直到獲取到你需要的信息,

注意!只有當(dāng)調(diào)度器中不存在任何request了,整個(gè)程序才會(huì)停止,(也就是說,對(duì)于下載失敗的URL,Scrapy會(huì)重新下載。)

以上就是Scrapy整個(gè)流程了。

引用來自—靜覓

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 說起寫爬蟲,大多數(shù)第一時(shí)間想到的就是python了。python語法簡潔明了,加上及其豐富好用的庫,用它來寫爬蟲有...
    瘋狂的哈丘閱讀 8,361評(píng)論 1 15
  • Scrapy 框架 (本文僅用作個(gè)人記錄) - Scrapy框架是用純python實(shí)現(xiàn)一個(gè)為了爬去網(wǎng)站數(shù)據(jù),提取結(jié)...
    wwxxee閱讀 986評(píng)論 0 3
  • 在爬蟲技術(shù)中,我們使用 Requests 和 Selenium 可以解決80%的需求,那么為什么我們還需要學(xué)習(xí) S...
    閑歡閱讀 515評(píng)論 0 1
  • Scrapy框架Scrapy是用純Python實(shí)現(xiàn)一個(gè)為了爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架,用途非常廣...
    __晴天__閱讀 1,019評(píng)論 0 0
  • 推薦指數(shù): 6.0 書籍主旨關(guān)鍵詞:特權(quán)、焦點(diǎn)、注意力、語言聯(lián)想、情景聯(lián)想 觀點(diǎn): 1.統(tǒng)計(jì)學(xué)現(xiàn)在叫數(shù)據(jù)分析,社會(huì)...
    Jenaral閱讀 5,982評(píng)論 0 5

友情鏈接更多精彩內(nèi)容