Scrapy框架的流程(一)

一凝赛、Scrapy簡介

  • 概述
    Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù)捆昏,提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 可以應(yīng)用在包括數(shù)據(jù)挖掘寇仓,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中躺枕。

    其最初是為了 頁面抓取 (更確切來說, 網(wǎng)絡(luò)抓取 )所設(shè)計(jì)的, 也可以應(yīng)用在獲取API所返回的數(shù)據(jù)(例如 Amazon Associates Web Services ) 或者通用的網(wǎng)絡(luò)爬蟲。

    Scrapy 使用了 Twisted'tw?st?d異步網(wǎng)絡(luò)框架來處理網(wǎng)絡(luò)通訊晌端,可以加快我們的下載速度泻骤,不用自己去實(shí)現(xiàn)異步框架,并且包含了各種中間件接口,可以靈活的完成各種需求。

  • 官方文檔
// 中文文檔  版本較低(未完成,只更新了intro部分,請謹(jǐn)慎參考)
- Scrapy 1.0版本中文文檔
https://scrapy-chs.readthedocs.io/zh_CN/1.0/

- Scrapy 0.25 中文文檔
https://scrapy-chs.readthedocs.io/zh_CN/latest/

// 英文文檔  需要翻墻
http://doc.scrapy.org/en/latest

二兆沙、Scrapy流程

  • 流程圖


    Scrapy流程圖
  • Scrapy組件

    Scrapy Engine(引擎): 負(fù)責(zé)Spider欧芽、ItemPipeline、Downloader葛圃、Scheduler中間的通訊千扔,信號、數(shù)據(jù)傳遞等库正。

    Scheduler(調(diào)度器): 它負(fù)責(zé)接受引擎發(fā)送過來的Request請求曲楚,并按照一定的方式進(jìn)行整理排列,入隊(duì)诀诊,當(dāng)引擎需要時(shí)洞渤,交還給引擎。

    Downloader(下載器):負(fù)責(zé)下載Scrapy Engine(引擎)發(fā)送的所有Requests請求属瓣,并將其獲取到的Responses交還給Scrapy Engine(引擎)载迄,由引擎交給Spider來處理,

    Spider(爬蟲):它負(fù)責(zé)處理所有Responses,從中分析提取數(shù)據(jù)抡蛙,獲取Item字段需要的數(shù)據(jù)护昧,并將需要跟進(jìn)的URL提交給引擎,再次進(jìn)入Scheduler(調(diào)度器)粗截,

    Item Pipeline(管道):它負(fù)責(zé)處理Spider中獲取到的Item惋耙,并進(jìn)行進(jìn)行后期處理(詳細(xì)分析、過濾、存儲(chǔ)等)的地方.

    Downloader Middlewares(下載中間件):你可以當(dāng)作是一個(gè)可以自定義擴(kuò)展下載功能的組件绽榛。

    Spider Middlewares(Spider中間件):你可以理解為是一個(gè)可以自定擴(kuò)展和操作引擎和Spider中間通信的功能組件(比如進(jìn)入Spider的Responses;和從Spider出去的Requests)

  • 幫助剛?cè)腴T者的理解的運(yùn)行流程

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

2 Spider:老大要我處理xxxx.com灭美。

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

4 Spider:給你,第一個(gè)URL是xxxxxxx.com届腐。

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

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

7 引擎:Hi围详!調(diào)度器朴乖,把你處理好的request請求給我。

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

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

10 下載器:好的嫉拐!給你,這是下載好的東西魁兼。(如果失斖衽恰:sorry,這個(gè)request下載失敗了咐汞。然后引擎告訴調(diào)度器盖呼,這個(gè)request下載失敗了,你記錄一下化撕,我們待會(huì)兒再下載)

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

12 Spider:(處理完畢數(shù)據(jù)之后對于需要跟進(jìn)的URL)掠手,Hi憾朴!引擎,我這里有兩個(gè)結(jié)果喷鸽,這個(gè)是我需要跟進(jìn)的URL众雷,還有這個(gè)是我獲取到的Item數(shù)據(jù)。

13 引擎:Hi !管道 我這兒有個(gè)item你幫我處理一下砾省!調(diào)度器鸡岗!這是需要跟進(jìn)URL你幫我處理下。然后從第四步開始循環(huán)编兄,直到獲取完老大需要全部信息轩性。

14 管道``調(diào)度器:好的,現(xiàn)在就做翻诉!
  • 運(yùn)行流程

    1炮姨、Spider爬蟲部分發(fā)送請求,通過SpiderMiddleware中間層處理后發(fā)送給ENGINE引擎模塊

    2碰煌、引擎模塊將請求發(fā)送給SCHEDULER模塊進(jìn)行調(diào)度

    3舒岸、SCHEDULER模塊將可以執(zhí)行的請求調(diào)度給引擎模塊

    4、引擎模塊將請求發(fā)送給DOWNLOADER下載模塊進(jìn)行下載芦圾,期間會(huì)經(jīng)過DownloadMiddleware中間件進(jìn)行處理

    5蛾派、下載模塊將爬取好的網(wǎng)頁響應(yīng)經(jīng)過DownloaderMiddleware中間間處理后傳遞給引擎模塊

    6、引擎模塊將響應(yīng)傳遞給Spider爬蟲模塊進(jìn)行解析

    7个少、在爬蟲模塊我們自定義解析方式對響應(yīng)解析完成后生成Item對象或者新的Request對象洪乍,經(jīng)過SpidderMiddleware發(fā)送給引擎模塊

    8、如果是Item對象傳遞給item和pipeline來進(jìn)行對應(yīng)的處理夜焦;如果是Request對象則繼續(xù)調(diào)度下載壳澳,重復(fù)之前的步驟。

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末卸伞,一起剝皮案震驚了整個(gè)濱河市抹镊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌荤傲,老刑警劉巖垮耳,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遂黍,居然都是意外死亡终佛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門雾家,熙熙樓的掌柜王于貴愁眉苦臉地迎上來查蓉,“玉大人,你說我怎么就攤上這事榜贴⊥阊校” “怎么了妹田?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鹃共。 經(jīng)常有香客問我鬼佣,道長,這世上最難降的妖魔是什么霜浴? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任晶衷,我火速辦了婚禮,結(jié)果婚禮上阴孟,老公的妹妹穿的比我還像新娘晌纫。我一直安慰自己,他們只是感情好永丝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布够话。 她就那樣靜靜地躺著因惭,像睡著了一般婿牍。 火紅的嫁衣襯著肌膚如雪非迹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天喝检,我揣著相機(jī)與錄音嗅辣,去河邊找鬼。 笑死挠说,一個(gè)胖子當(dāng)著我的面吹牛澡谭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播损俭,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼译暂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了撩炊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤崎脉,失蹤者是張志新(化名)和其女友劉穎拧咳,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囚灼,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骆膝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了灶体。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阅签。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蝎抽,靈堂內(nèi)的尸體忽然破棺而出政钟,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布养交,位于F島的核電站精算,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏碎连。R本人自食惡果不足惜灰羽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鱼辙。 院中可真熱鬧廉嚼,春花似錦、人聲如沸倒戏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽峭梳。三九已至舰绘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間葱椭,已是汗流浹背捂寿。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留孵运,地道東北人秦陋。 一個(gè)月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像治笨,于是被迫代替她去往敵國和親驳概。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355

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