爬蟲框架pyspider個人總結(jié)(詳細)熟悉

前言

pyspider是支持WebUI的,支持任務(wù)監(jiān)控漂洋,項目管理遥皂,以及多種數(shù)據(jù)庫的一個強大的爬蟲框架,這個真的很好用9羝Q菅怠!這主要不是教大家怎么使用贝咙,怎么怎么樣样悟,主要是讓大家懂運行的原理,以及框架的整體結(jié)構(gòu)庭猩!

今天主要是分為這幾部分:

1.為什么要使用pyspider乌奇?
2.pyspider的安裝
3.pyspider簡單使用
4.pyspider框架的架構(gòu)和執(zhí)行流程

一、為什么要使用pyspider眯娱?

我們很好奇礁苗,我們明明有了Scrapy框架,為什么還要使用pyspider框架呢徙缴?我們說兩點

  • pyspider的優(yōu)點试伙,它有這么幾個優(yōu)點
    1.提供WebUI界面,調(diào)試爬蟲很方便
    2.可以很方便的進行爬取的流程監(jiān)控和爬蟲項目管理
    3.支持常見的數(shù)據(jù)庫
    4.支持使用PhantomJS于样,可以抓取JavaScript頁面
    5.支持優(yōu)先級定制和定時爬取等功能
  • 和Scrapy的比較
    1.pyspider 提供 WebUI,Scrapy它采用的是代碼和命令行操作疏叨,但可以通過對接 Portia 現(xiàn)可視化配置
    2.pyspider 支持 PhantomJS來進行 JavaScript 誼染頁面的采集 Scrapy 可以對接 Sc rapy-Splash組件,這需要額外配置
    3.pyspider 中內(nèi)置pyquery 作為選擇器而Scrapy 接了XPath 對接css選擇器和正則匹配
    4.pyspider的可擴展程度不高穿剖,Scrapy可以通過對接其他的模塊實現(xiàn)強大的功能蚤蔓,模塊之間的耦合度低
  • 總結(jié)
    所以如果要快速實現(xiàn)一個頁面的抓取,推薦使用 pyspider,開發(fā)更加便捷,如果要應(yīng)對反爬程度很強糊余、超大規(guī)模的抓取秀又,推薦使用 Scrapy 单寂,

二、pyspider的安裝

pyspider的安裝相對簡單吐辙,不需要安裝一些列的依賴庫直接使用

pip install pyspider

然后等待安裝成功就行宣决,也可以使用源碼安裝 pyspider源碼

三、pyspider的簡單使用

1.安裝之后先驗證是否安裝成功昏苏,在CMD下輸入

pyspider

或者

pyspider all

兩者是一樣的尊沸,新的pyspider框架已經(jīng)整合了,所以使用pyspider就好

捕獲.JPG

出現(xiàn)這個則說明運行成功贤惯,運行在5000端口洼专,當然這個可以改

2.打開瀏覽器,輸入

http://localhost:5000/

進入pyspider控制臺


捕獲.JPG

出現(xiàn)這個則說明你的框架沒什么問題7豕埂:!

我把框架的執(zhí)行分為了這么幾部分

  • 創(chuàng)建
  • 執(zhí)行
  • 調(diào)試
  • 結(jié)果
    我們分別來一步步說一下
    1.創(chuàng)建


    捕獲.JPG

    點擊create開始創(chuàng)建


    捕獲2.JPG

    彈出兩個東西浦译,project name 是你項目的名稱 start url 是你要爬取的鏈接棒假,分別輸入以后,再次點擊右下角的create精盅,完成創(chuàng)建
    1.JPG

    整個右邊部分帽哑,分為這么幾個東西
    1.右上角的save 是保存按鈕,更改代碼之后幾點保存

    2.左上角的#后面的是你創(chuàng)建的一些參數(shù)叹俏,如創(chuàng)建時間妻枕,爬取域名,編碼格式等
    3.下面的代碼部分是創(chuàng)建項目自動生成的粘驰,你可以添加一些你自己的東西屡谐,我們在這里完成整個項目的爬取、解析蝌数、以及保存等工作
    crawl_config:項目的所有爬取配置統(tǒng)一定義到這里愕掏,如定義 Headers 、設(shè)置代理等顶伞,配置之后全局生效
    @every:設(shè)置定時爬取的時間
    on_start:爬取入口饵撑,初始的爬取請求會在這里產(chǎn)生
    self.crawl:該方法是爬取的主方法,被on_start調(diào)用唆貌,即可新建一個爬取請求滑潘,這里面有這么幾個參數(shù)第一個參數(shù)是爬取的 URL ,這里自動替換成我們所定義的 URL 锨咙,還有 個參數(shù) callback 语卤,它指定了這個頁面爬取成功后用哪個方法進行解析,代碼中指定為 Idex_page()方法,即如果這個 URL 對應(yīng)的頁面爬取成功了粹舵,那 Response 將交給 index_page ()方法解析
    index_page:方法接收這個 Response 參數(shù)钮孵,Response 對接了 pyquery 我們直接調(diào)用 doc()方法傳入相應(yīng)的css 選擇器,就可以像 query 一樣解析此頁面齐婴,代碼中默認是 a[href"="http ”]油猫,也就是說該方法解析了頁面的所有鏈接稠茂,然后將鏈接遍歷柠偶,再次調(diào)用了 crawl ()方法生成了新的爬請求,同時再指定了 callback為detail_page 睬关,意思是說這些頁面爬取成功了就調(diào)用 detail_page方法解析這里诱担,index_page ()實現(xiàn)了兩個功能,一是將爬取的結(jié)果進行解析电爹, 二是生成新的爬取請求
    detail age:接收 Response 作為參數(shù)該方法抓取的就是詳情頁的信息蔫仙,不會生成新的請求,只對 Response 對象做解析丐箩,解析之后將結(jié)果以字典的形式返回摇邦,將結(jié)果保存到數(shù)據(jù)庫


    捕獲.JPG
  • 點擊左上角的pyspider可以返回主控制界面
  • 右上角的run可以讓程序開始運行
  • 底邊一排功能從左到右依次是 enable css selector helper:快捷替換css選擇器 web:產(chǎn)看該URL下的web界面,html:產(chǎn)看該url下的HTML格式 屎勘,follows:查看一共發(fā)起了多少個請求

2.執(zhí)行點擊run可以看到暫時執(zhí)行后的結(jié)果
3.如果不正確施籍,或者爬取信息有誤,對右邊代碼部分進行調(diào)試
4.最后返回到控制界面概漱,把status改成running丑慎,并點擊后面的run按鈕開始執(zhí)行
分別顯示5m、1h瓤摧、1d5分鐘一小時以及一天的爬取結(jié)果竿裂,綠色表示成功,紅色表示請求次數(shù)太多而放棄照弥,藍色表示等待執(zhí)行

一般的使用過程就是確定爬取的網(wǎng)站腻异,創(chuàng)建項目,在crawl_config里進行配置这揣,在index_page里確定要爬取的url捂掰,在detail_page里確定要爬取的數(shù)據(jù)信息

四、pyspider框架的架構(gòu)和執(zhí)行流程

1.pyspider框架的架構(gòu)
pyspider的架構(gòu)相對簡單分為這么幾個部分:scheduler(調(diào)度器)曾沈、fetcher(抓取器)这嚣、processor(腳本執(zhí)行)任務(wù)由 scheduler發(fā)起調(diào)度,fetcher抓取網(wǎng)頁內(nèi)容塞俱, processor執(zhí)行預(yù)先編寫的py腳本姐帚,輸出結(jié)果或產(chǎn)生新的提鏈任務(wù)(scheduler)、整個爬取的過程受障涯,Monitor(監(jiān)控器)的監(jiān)控罐旗,結(jié)果保存在Result Worker(結(jié)果處理器)中膳汪。
2.每個 pyspider 的項目對應(yīng)一個 Python 腳本,該腳本中定義了一個Handler 類九秀,它有on_start ()方法 爬取首先調(diào)用 on_start ()方法生成最初的抓取任務(wù)遗嗽,然后發(fā)送給 Scheduler進行調(diào)度

3.執(zhí)行流程

  • scheduler 將抓取任務(wù)分發(fā)給 Fetcher 進行抓取, Fetcher 執(zhí)行并得到響應(yīng)鼓蜒,隨后將響應(yīng)發(fā)送給Processer
  • Processer 處理響應(yīng)并提取 url痹换,新的 URL 生成新的抓取任務(wù),然后通過消息隊列的方式通知Schduler 當前抓取任務(wù)執(zhí)行情況都弹,并將新生成的抓取任務(wù)發(fā)送Scheduler 如果生成了提取結(jié)果娇豫,則將其發(fā)送到結(jié)果隊列等待 Result Worker 處理
  • Scheduler 接收到新的抓取任務(wù),然后查詢數(shù)據(jù)庫畅厢,判斷其如果是新的抓取任務(wù)或者是需要重試的任務(wù)就繼續(xù)進行調(diào)度冯痢,然后將其發(fā)送回Fetcher 進行抓取
  • 不斷重復(fù)以上流程實現(xiàn)抓取

五、出現(xiàn)錯誤

pyspider安裝和使用出現(xiàn)的一些問題
初學(xué)pyspider跳過的坑
基本上常見的錯誤都在這了框杜!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浦楣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子咪辱,更是在濱河造成了極大的恐慌振劳,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梧乘,死亡現(xiàn)場離奇詭異澎迎,居然都是意外死亡,警方通過查閱死者的電腦和手機选调,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門夹供,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仁堪,你說我怎么就攤上這事哮洽。” “怎么了弦聂?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵鸟辅,是天一觀的道長。 經(jīng)常有香客問我莺葫,道長匪凉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任捺檬,我火速辦了婚禮再层,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己聂受,他們只是感情好蒿秦,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛋济,像睡著了一般棍鳖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碗旅,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天渡处,我揣著相機與錄音,去河邊找鬼扛芽。 笑死骂蓖,一個胖子當著我的面吹牛积瞒,可吹牛的內(nèi)容都是我干的川尖。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼茫孔,長吁一口氣:“原來是場噩夢啊……” “哼叮喳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缰贝,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤馍悟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后剩晴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锣咒,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年赞弥,在試婚紗的時候發(fā)現(xiàn)自己被綠了毅整。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡悼嫉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出总棵,到底是詐尸還是另有隱情,我是刑警寧澤刃唤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布硬霍,位于F島的核電站唯卖,受9級特大地震影響拜轨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜法牲,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一瓷蛙、第九天 我趴在偏房一處隱蔽的房頂上張望艰猬。 院中可真熱鬧翅萤,春花似錦套么、人聲如沸胚泌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秸脱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巷查,已是汗流浹背笔呀。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人檀蹋。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓舅逸,卻偏偏與公主長得像坠七,于是被迫代替她去往敵國和親拄踪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

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

  • 一,pyspider pyspider的設(shè)計基礎(chǔ)是:以python腳本驅(qū)動的抓取環(huán)模型爬蟲 通過python腳本進...
    學(xué)而不厭888閱讀 897評論 0 1
  • 整理了Node.js忿薇、PHP、Go躏哩、JAVA署浩、Ruby、Python等語言的爬蟲框架扫尺。不知道讀者們都用過什么爬蟲框...
    SeanCheney閱讀 5,723評論 0 16
  • 背景 部門(東方IC筋栋、圖蟲)業(yè)務(wù)驅(qū)動,需要搜集大量圖片資源正驻,做數(shù)據(jù)分析弊攘,以及正版圖片維權(quán)。前期主要用node做爬蟲...
    字節(jié)跳動技術(shù)團隊閱讀 7,647評論 1 67
  • 前言 我這兩天想復(fù)習(xí)一下Scrapy框架姑曙,然后看了看自己之前的筆記襟交,發(fā)現(xiàn)總結(jié)的有點亂,本來心思在網(wǎng)上找找資料伤靠,然后...
    Wangthirteen閱讀 136,224評論 2 71
  • 他緩步走出監(jiān)獄的大門捣域。 白花花的陽光晃得他睜不開眼,他不習(xí)慣地抬起手來宴合,遮扶著額眉焕梅。 預(yù)料之中,沒有一個人來接他形纺。...
    滋小然閱讀 808評論 33 30