基于scrapy框架的實(shí)時監(jiān)控數(shù)據(jù)獲取

眾所周知捂龄,大數(shù)據(jù)的浪潮已經(jīng)來臨,爬蟲已經(jīng)成為獲取數(shù)據(jù)最重要的方式之一亭畜,而爬蟲也會隨著我們業(yè)務(wù)的增長變得越來越多,人工監(jiān)控的成本越來越高迎卤,所以我們也會想各種方式來監(jiān)控每個爬蟲拴鸵,一開始我們是直接從數(shù)據(jù)庫入手,也就是監(jiān)控數(shù)據(jù)庫數(shù)據(jù)的增長量來做為爬蟲是否出異常的依據(jù)蜗搔,我們以一周為期限劲藐,如果一周內(nèi),數(shù)據(jù)落庫的量為個位數(shù)樟凄,我們則確定該爬蟲異常聘芜,但是后來發(fā)現(xiàn)這種方法的局限性,及時性差缝龄,錯誤位置不明確汰现,導(dǎo)致修復(fù)爬蟲時間長。

? ? 后來我想從爬蟲框架入手叔壤,我以python的scrapy爬蟲框架為例瞎饲,首先我們的目的是為了及時監(jiān)控爬蟲異常以及明確的異常位置,讓維護(hù)人員能及時的修復(fù)異常爬蟲炼绘;再者盡量少的修改原本我們的每個爬蟲代碼(最好不修改),一開始我想過修改scrapy框架的源碼也就是修改scrapy框架的異常處理代碼嗅战,但是發(fā)現(xiàn)這并不是很好的方法,也想過封裝xpath等函數(shù)饭望,來反映未捕捉到數(shù)據(jù)時仗哨,但是這種方案也不合理。最后我受到j(luò)ava中異常類定義的啟發(fā)铅辞,在不修改原本其他item的情況下厌漂,多定義ExceptionItem這個類來放異常數(shù)據(jù)具體字段要對照每個項(xiàng)目的具體情況,基本字段有爬蟲名斟珊,錯誤信息苇倡,若需要BUG重現(xiàn)那么還需要對應(yīng)異常的html中的body體,再者就是在每個爬蟲except里面進(jìn)行yeild?exceptionItem囤踩,exceptionItem對應(yīng)字段的獲取根據(jù)具體情況處理旨椒,因?yàn)樗械漠惓L幚矶家粯樱锌梢远x一個工具函數(shù)將相關(guān)字段傳入即可堵漱,進(jìn)行了以上處理后综慎,我們會發(fā)現(xiàn),不管這個數(shù)據(jù)是否異常爬蟲都會拋出一個item勤庐,可能是異常item也可能是正常的item示惊,而原本是若發(fā)生異常則不yield item好港,這樣就會導(dǎo)致我們不知道是原本網(wǎng)站沒有更新數(shù)據(jù),還是爬蟲爬取過程中出了異常米罚。完成了以上工作之后钧汹,我們就要去完成最重要的一步,也就是定義了一個異常pipeline录择,也可以說是過濾發(fā)生異常的item拔莱,scrapy官網(wǎng)我們知道,item可以進(jìn)入多個pipeline隘竭,直到用戶拋出raise DropItem("Duplicate item found: %s" % item)時塘秦,該item不進(jìn)入下一個管道,過濾pipeline可以對每一個item進(jìn)行類型判斷若為ExceptionItem則存入mongodb或者通過消息隊(duì)列發(fā)送到處理中心在最終落到關(guān)系型數(shù)據(jù)庫动看,若為其他非ExceptionItem嗤形,我們還可以對其重要字段是否爬蟲到作為判斷依據(jù),例如新聞的title弧圆、conten沒有爬取到則也生成一個ExceptionItem格式的異常item存入mongodb或者拋到異常消息隊(duì)列,如果字段都正常爬蟲則return item 進(jìn)入下一個管道笔咽,進(jìn)行原本應(yīng)該處理的管道中搔预。

#items.py

在末尾加入

#exceptionPipeline.py

#test_error.py

若有更好的監(jiān)控方法,希望可以共同探討

若該方法有不足之處叶组,望大佬們提出

轉(zhuǎn)移至公眾號:打工人zZ

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拯田,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子甩十,更是在濱河造成了極大的恐慌船庇,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侣监,死亡現(xiàn)場離奇詭異鸭轮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)橄霉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門窃爷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姓蜂,你說我怎么就攤上這事按厘。” “怎么了钱慢?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵逮京,是天一觀的道長。 經(jīng)常有香客問我束莫,道長懒棉,這世上最難降的妖魔是什么草描? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮漓藕,結(jié)果婚禮上陶珠,老公的妹妹穿的比我還像新娘。我一直安慰自己享钞,他們只是感情好揍诽,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著栗竖,像睡著了一般暑脆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狐肢,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天添吗,我揣著相機(jī)與錄音,去河邊找鬼份名。 笑死碟联,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的僵腺。 我是一名探鬼主播鲤孵,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辰如!你這毒婦竟也來了普监?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤琉兜,失蹤者是張志新(化名)和其女友劉穎凯正,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豌蟋,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡廊散,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了夺饲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奸汇。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖往声,靈堂內(nèi)的尸體忽然破棺而出擂找,到底是詐尸還是另有隱情,我是刑警寧澤浩销,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布贯涎,位于F島的核電站,受9級特大地震影響慢洋,放射性物質(zhì)發(fā)生泄漏塘雳。R本人自食惡果不足惜陆盘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望败明。 院中可真熱鬧隘马,春花似錦、人聲如沸妻顶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讳嘱。三九已至幔嗦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沥潭,已是汗流浹背邀泉。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钝鸽,地道東北人汇恤。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像拔恰,于是被迫代替她去往敵國和親屁置。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

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