pyspider 學習文檔--新手上路

最近在研究學習一個好部署撒遣,好管理的python爬蟲框架邮偎,pyspider貌似是一個不錯的選擇。我再這里整理了一下網(wǎng)上個各種資料愉舔,有興趣的童鞋們接下來就跟我一起學習啦钢猛。

相對于 Scrapy 框架來說, pyspider 具有以下優(yōu)點:
1.有 Web 界面用于開發(fā)爬蟲轩缤,任務命迈、項目管理,查看爬取結果
2.支持各種數(shù)據(jù)庫(MySQL火的、MongoDB壶愤、SQLite 等)存儲爬取結果;
3.可以方便設置任務優(yōu)先級馏鹤,重新爬取策略征椒;
4.支持單機與分布式部署;
5.支持 PhantomJS 爬取動態(tài)網(wǎng)頁湃累。

學習目錄:

step 1: 安裝pyspider

首先當然是要安裝pyspider啦,請參照這里pyspider的安裝

step 2: pyspider 架構學習

pyspider架構圖.png

如上圖所示宵统,pyspider各個組件之間通過消息隊列建立連接晕讲,運行在各自所屬的進程或者線程之中,并且是可替換的马澈。
webui

  • web的可視化任務監(jiān)控
  • web腳本編寫瓢省,單步調(diào)試
  • 異常捕獲、log捕獲痊班,print捕獲等

Scheduler/調(diào)度器

  • 任務優(yōu)先級
  • 周期定時任務
  • 流量控制
  • 基于時間周期或前鏈標簽(如更新時間)的重抓取調(diào)度

Fetcher /抓取器

  • dataurl支持勤婚,用于假抓取模擬傳遞
  • method,header,cookie,proxy,etag,last_modified,timeout等等抓取調(diào)度控制
  • 可以通過適配類似phantomjs的webkit引擎支持渲染

Processor/處理器

  • 內(nèi)置的pyquery,以jQuery解析頁面
  • 在腳本中完全控制調(diào)度抓取的各項參數(shù)
  • 可以向后鏈傳遞信息
  • 異常捕獲

特點:

1.各個組件間使用消息隊列連接涤伐,除了scheduler是單點的蛔六,fetcher 和 processor 都是可以多實例分布式部署的荆永。scheduler 負責整體的調(diào)度控制。
2.任務由 scheduler 發(fā)起調(diào)度国章,fetcher 抓取網(wǎng)頁內(nèi)容具钥, processor執(zhí)行預先編寫的python腳本,輸出結果或產(chǎn)生新的提鏈任務(發(fā)往 scheduler)液兽,形成閉環(huán)骂删。
3.每個腳本可以靈活使用各種python庫對頁面進行解析,使用框架API控制下一步抓取動作四啰,通過設置回調(diào)控制解析動作宁玫。
工作流:
1:每一個python腳本都會有一個on_start函數(shù),當你在WebUI中點擊Run按鈕時柑晒,一個新的任務就會被遞交給調(diào)度器欧瘪,等待執(zhí)行
2:Scheduler會分發(fā)這個task到相應的Fetcher中
3:fetcher會抓取初始化的url并生成一個request和response對象,并傳遞給Processor
4:Processor調(diào)用on_start函數(shù)并且傳遞一下新的url去爬取匙赞,但完成一個url的抓取工作時佛掖,processor會發(fā)送一個消息給Scheduler,告訴調(diào)度器這個任務完成涌庭。并且會發(fā)送一個新的task到scheduler中芥被,同時會把爬取的結果發(fā)送到一個result_queue中
5:Scheduler接收到新的task,會判斷這個任務是一個新的任務還是需要重新抓取的任務,新的任務會把他們加入到任務隊列中坐榆,如果是重新需要抓取的任務拴魄,則需要看一下時間周期,滿足要求的才會放到任務隊列中去席镀,并且按順序分發(fā)
6:上面的過程會一直持續(xù)匹中,直到程序死掉或者我們手動停止。

Pyspider控制臺使用說明

pyspider控制臺.png

隊列統(tǒng)計:是為了方便查看爬蟲狀態(tài)豪诲,優(yōu)化爬蟲爬取速度新增的狀態(tài)統(tǒng)計.每個組件之間的數(shù)字就是對應不同隊列的排隊數(shù)量.通常來是0或是個位數(shù).如果達到了幾十甚至一百說明下游組件出現(xiàn)了瓶頸或錯誤顶捷,需要分析處理.
新建項目:pyspider與scrapy最大的區(qū)別就在這,pyspider新建項目調(diào)試項目完全在web下進行跛溉,而scrapy是在命令行下開發(fā)并運行測試.
組名:項目新建后一般來說是不能修改項目名的,如果需要特殊標記可修改組名.直接在組名上點鼠標左鍵進行修改.注意:組名改為delete后如果狀態(tài)為stop狀態(tài)扮授,24小時后項目會被系統(tǒng)刪除.
運行狀態(tài):這一欄顯示的是當前項目的運行狀態(tài).每個項目的運行狀態(tài)都是單獨設置的.直接在每個項目的運行狀態(tài)上點鼠標左鍵進行修改.運行分為五個狀態(tài):TODO芳室,STOP,CHECKING刹勃,DEBUG堪侯,RUNNING.各狀態(tài)說明:TODO是新建項目后的默認狀態(tài),不會運行項目.STOP狀態(tài)是停止狀態(tài)荔仁,也不會運行. CHECHING是修改項目代碼后自動變的狀態(tài).DEBUG是調(diào)試模式伍宦,遇到錯誤信息會停止繼續(xù)運行芽死,RUNNING是運行狀態(tài)次洼,遇到錯誤會自動嘗試关贵,如果還是錯誤會跳過錯誤的任務繼續(xù)運行.
速度控制:很多朋友安裝好用說爬的慢,多數(shù)情況是速度被限制了.這個功能就是速度設置項.rate是每秒爬取頁面數(shù)卖毁,burst是并發(fā)數(shù).如1/3是三個并發(fā)揖曾,每秒爬取一個頁面.
簡單統(tǒng)計:這個功能只是簡單的做的運行狀態(tài)統(tǒng)計,5m是五分鐘內(nèi)任務執(zhí)行情況亥啦,1h是一小時內(nèi)運行任務統(tǒng)計炭剪,1d是一天內(nèi)運行統(tǒng)計,all是所有的任務統(tǒng)計.
運行:run按鈕是項目初次運行需要點的按鈕翔脱,這個功能會運行項目的on_start方法來生成入口任務.
任務列表:顯示最新任務列表奴拦,方便查看狀態(tài),查看錯誤等
結果查看:查看項目爬取的結果.

step3: pyspider通用API學習

請移步:pyspider通用API學習

step4: css selecotor選擇器届吁,pyquery學習

請移步:css selecotor選擇器错妖,pyquery學習

step5: pyspider擴展學習

請移步:pyspider擴展學習

step6: 。瓷产。站玄。

請移步:。濒旦。株旷。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市尔邓,隨后出現(xiàn)的幾起案子晾剖,更是在濱河造成了極大的恐慌,老刑警劉巖梯嗽,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件齿尽,死亡現(xiàn)場離奇詭異,居然都是意外死亡灯节,警方通過查閱死者的電腦和手機循头,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炎疆,“玉大人卡骂,你說我怎么就攤上這事⌒稳耄” “怎么了全跨?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長亿遂。 經(jīng)常有香客問我浓若,道長渺杉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任挪钓,我火速辦了婚禮是越,結果婚禮上,老公的妹妹穿的比我還像新娘诵原。我一直安慰自己英妓,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布绍赛。 她就那樣靜靜地躺著蔓纠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吗蚌。 梳的紋絲不亂的頭發(fā)上腿倚,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機與錄音蚯妇,去河邊找鬼敷燎。 笑死,一個胖子當著我的面吹牛箩言,可吹牛的內(nèi)容都是我干的硬贯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼陨收,長吁一口氣:“原來是場噩夢啊……” “哼饭豹!你這毒婦竟也來了?” 一聲冷哼從身側響起务漩,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拄衰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后饵骨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翘悉,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年居触,在試婚紗的時候發(fā)現(xiàn)自己被綠了妖混。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡轮洋,死狀恐怖制市,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情砖瞧,我是刑警寧澤息堂,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布嚷狞,位于F島的核電站块促,受9級特大地震影響荣堰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜竭翠,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一振坚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斋扰,春花似錦渡八、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至问裕,卻和暖如春逮壁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背粮宛。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工窥淆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人巍杈。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓忧饭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親筷畦。 傳聞我的和親對象是個殘疾皇子词裤,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

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

  • 各個組件之間使用消息隊列連接,通過設置回調(diào)函數(shù)控制解析動作腳本中有一個on_result的回調(diào)汁咏,在里面可以自行實現(xiàn)...
    _小老虎_閱讀 1,733評論 0 0
  • 前言 pyspider是支持WebUI的亚斋,支持任務監(jiān)控,項目管理攘滩,以及多種數(shù)據(jù)庫的一個強大的爬蟲框架帅刊,這個真的很好...
    Wangthirteen閱讀 58,069評論 -1 22
  • 一、為什么要使用pyspider漂问? 我們很好奇赖瞒,我們明明有了Scrapy框架,為什么還要使用pyspider框架呢...
    田小田txt閱讀 1,127評論 0 0
  • 官方文檔:http://docs.pyspider.org/中文網(wǎng)址:http://www.pyspider.cn...
    瘦不下去了閱讀 292評論 0 0
  • pyspider框架的架構 1.概述 下圖顯示了pyspider體系結構及其組件的概述蚤假,以及系統(tǒng)內(nèi)部發(fā)生的數(shù)據(jù)流的...
    夢捷者閱讀 813評論 0 1