原理:Scrapy架構(gòu)分析

1. 組件(Component)

Scrapy一共有七個(gè)主要組件


No. 組件 功能 說明
1 爬蟲引擎(Scrapy Engine) 負(fù)責(zé)控制數(shù)據(jù)流在系統(tǒng)中所有組件中流動(dòng) 相當(dāng)于發(fā)動(dòng)機(jī)
2 調(diào)度器(Scheduler) 從引擎接受request并將他們?nèi)腙?duì)近范,以便之后引擎請(qǐng)求他們時(shí)提供給引擎 相當(dāng)于request管家
3 下載器(Downloader) 負(fù)責(zé)獲取頁(yè)面數(shù)據(jù)并提供給引擎,而后提供給spider
4 爬蟲(Spiders) 分析response并提取item匿又,或者發(fā)出新的請(qǐng)求。
5 項(xiàng)目管道(Item Pipelines) 負(fù)責(zé)處理被spider提取出來(lái)的item称勋,保存處理數(shù)據(jù)
6 爬蟲中間件(Spider middlewares) 引擎及Spider之間的特定鉤子藐翎,處理spider的輸入(response)和輸出(itemsrequests)
7 下載中間件(Downloader middlewares) 引擎及下載器之間的特定鉤子,處理Downloader傳遞給引擎的response紫岩。

2. 數(shù)據(jù)流(Data flow)

Scrapy中的數(shù)據(jù)流由執(zhí)行引擎控制规惰,其過程如下:

  1. 引擎打開一個(gè)網(wǎng)站(open a domain),找到處理該網(wǎng)站的Spider并向該spider請(qǐng)求第一個(gè)要爬取的URL(s)泉蝌。
  2. 引擎從Spider中獲取到第一個(gè)要爬取的URL并在調(diào)度器(Scheduler)以Request調(diào)度歇万。
  3. 引擎向調(diào)度器請(qǐng)求下一個(gè)要爬取的URL。
  4. 調(diào)度器返回下一個(gè)要爬取的URL給引擎勋陪,引擎將URL通過下載中間件(請(qǐng)求(request)方向)轉(zhuǎn)發(fā)給下載器(Downloader)贪磺。
  5. 一旦頁(yè)面下載完畢,下載器生成一個(gè)該頁(yè)面的Response诅愚,并將其通過下載中間件(返回(response)方向)發(fā)送給引擎寒锚。
  6. 引擎從下載器中接收到Response并通過Spider中間件(輸入方向)發(fā)送給Spider處理。
  7. Spider處理Response并返回爬取到的Item及(跟進(jìn)的)新的Request給引擎违孝。
  8. 引擎將(Spider返回的)爬取到的Item給Item Pipeline刹前,將(Spider返回的)Request給調(diào)度器。
  9. (從第二步)重復(fù)直到調(diào)度器中沒有更多地request雌桑,引擎關(guān)閉該網(wǎng)站喇喉。

3. 中間件

No. 中間件 輸入 輸出
1 爬蟲中間件(Spider Middleware) process_spider_input() process_spider_output()
2 下載器中間件(Download Middleware) process_request() process_response()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市校坑,隨后出現(xiàn)的幾起案子拣技,更是在濱河造成了極大的恐慌千诬,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膏斤,死亡現(xiàn)場(chǎng)離奇詭異徐绑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)掸绞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門泵三,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人衔掸,你說我怎么就攤上這事烫幕。” “怎么了敞映?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵较曼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我振愿,道長(zhǎng)捷犹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任冕末,我火速辦了婚禮萍歉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘档桃。我一直安慰自己枪孩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布藻肄。 她就那樣靜靜地躺著蔑舞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嘹屯。 梳的紋絲不亂的頭發(fā)上攻询,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音州弟,去河邊找鬼钧栖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛婆翔,可吹牛的內(nèi)容都是我干的桐经。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼浙滤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了气堕?” 一聲冷哼從身側(cè)響起纺腊,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤畔咧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后揖膜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體誓沸,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年壹粟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拜隧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡趁仙,死狀恐怖洪添,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情雀费,我是刑警寧澤干奢,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站盏袄,受9級(jí)特大地震影響忿峻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辕羽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一逛尚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刁愿,春花似錦绰寞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至枷踏,卻和暖如春菩暗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旭蠕。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工停团, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掏熬。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓佑稠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親旗芬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舌胶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容