摘要:都說年末了,該給自己寫寫總結了。我現(xiàn)在做一些簡單的爬蟲都會用它。并且對數(shù)據(jù)的實時性要求較高,或者爬數(shù)據(jù)的時候封的太厲害了。對于這一類的爬蟲。消息隊列用于分發(fā)消息給某個爬蟲節(jié)點。爬蟲節(jié)點完成具體的爬蟲,格式化爬蟲數(shù)據(jù)。最后,感謝我的,謝謝
都說年末了,該給自己寫寫總結了。今天我想談一談的是我在公司這一年多里的負責的部分工作---爬蟲。做了這么久的爬蟲,是該寫點什么,留下點什么。在我所負責的這一段時間了。我總結了一下大概有以下幾類爬蟲設計思想。
簡單服務器定時爬蟲
客戶端爬蟲
lua解析
javascript解析
服務器離線爬蟲
下面在來細聊以下。
服務器-定時簡單爬蟲在最開始的時候,我們做的就是這個。這應該是最簡單的爬蟲了。搜索引擎搜出來的大概就是這一類了。
這一類的爬蟲特點是我只需要爬取一個網(wǎng)站的某一部分數(shù)據(jù),發(fā)起http請求做html解析,然后存數(shù)據(jù)庫,就完了。比如一些其他網(wǎng)站提供的一些公共數(shù)據(jù),或者不要求實時性的數(shù)據(jù)。如汽車之家的汽車數(shù)據(jù),如英雄聯(lián)盟的英雄數(shù)據(jù),如政府網(wǎng)站的某些展示數(shù)據(jù)。我用過scrapy來抓取dota2的一些數(shù)據(jù),后來發(fā)現(xiàn)scrapy不一定完全在自己掌控中,我自己寫了一個爬蟲框架,叫Tspider。我現(xiàn)在做一些簡單的爬蟲都會用它。基于php的協(xié)程與curl_multi_*函數(shù)集實現(xiàn)的。單進程可到2000有效處理/min。
這一類的爬蟲處理流程大概類似如下
網(wǎng)上宣傳的諸如《xxx抓取淘寶MM照片》、《我從知乎偷取了多少數(shù)據(jù)》等等爬蟲,大概如此?!?1天精通xx語言》的既視感。
這一類的爬蟲的優(yōu)點大概就是簡單吧。
客戶端解析(lua、javascript)我們公司是做移動端產(chǎn)品的,假如你也恰好是有(android/ios)客戶端支持的。并且對數(shù)據(jù)的實時性要求較高,或者爬數(shù)據(jù)的時候ip封的太厲害了??梢栽囋囄蚁旅嬲f的方式。我給他取名叫客戶端解析。
在這一類爬蟲中,需要客戶端嵌入腳本執(zhí)行引擎。把http的請求與數(shù)據(jù)解析放到客戶端去執(zhí)行。最后把數(shù)據(jù)呈現(xiàn)出來或者上報給服務器。準確度、實時性較高。
腳本:腳本的作用不過是把對應網(wǎng)站的數(shù)據(jù)(json、jsonp,html等等)轉換為我們需要的數(shù)據(jù)(格式化數(shù)據(jù))。當對方做出改變,我們只需要改變腳本就行。
策略:策略的作用是告訴客戶端,你們需要某部分時候,去執(zhí)行腳本中的哪個方法? 是否需要緩沖?是否需要展示原始網(wǎng)站的內容?等等一些通過服務器控制客戶端行為的東西。
離線爬蟲:是否需要在服務器爬取,將請求丟給消息隊列,離線爬蟲系統(tǒng)自己一邊玩去。
這種方式至少有兩個優(yōu)點:ip離散,實時性較高。
服務器-離線爬蟲系統(tǒng)對于絕大部分服務,數(shù)據(jù)的爬取需求,還是需要在服務器完成的。對于這一類的爬蟲。架構的設計,需要有很好的擴展性。
爬取請求從后臺控制、對外網(wǎng)關而來。
爬蟲觸發(fā)器,就是通過消息隊列告訴爬蟲節(jié)點啥時候爬,爬誰的數(shù)據(jù)。
后臺控制,可以控制支持哪些網(wǎng)站的數(shù)據(jù),告警,異常管理。
消息隊列用于分發(fā)消息給某個爬蟲節(jié)點。
爬蟲節(jié)點:完成具體的爬蟲,格式化爬蟲數(shù)據(jù)。支持某個網(wǎng)站的爬取,通常修改此次就行了,這里也需要做好統(tǒng)計,做好告警。
去重:去重可以試試布隆過濾器與simhash指紋算法和海明距離比較。
思想或叫準則吧總結一下:
只關心對的,不關心錯的。錯誤的,你永遠也枚舉不完。
在分層結構中,應該是越往最內層,數(shù)據(jù)(請求)越小,有效數(shù)據(jù)(請求)占比越高。
備份思想很重要。如果一臺機器掛斷的概率是百分之一,兩臺機器同時掛掉的概率就是萬分之一。
沒有什么萬能鑰匙,具體問題,具體分析,具體解決。
沒有什么完美的解決方案,有些時候需要根據(jù)業(yè)務做一些取舍。
最后,感謝我的leader——corey,謝謝!
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/38354.html
摘要:課程的第單元中嵩天老師給出的中國大學排名爬蟲優(yōu)化代碼如果把中的改為就會出錯,原因年各校排名數(shù)字的格式為而年各校排名數(shù)字的格式為,針對這個問題,我對嵩天老師的代碼做了一點修改,可能不是很漂亮,但是實現(xiàn)了功能我很開心。 本文是學習http://www.icourse163.org/lea... 課程的代碼實現(xiàn)和反思。 課程的第6單元中嵩天老師給出的中國大學排名爬蟲優(yōu)化代碼如果把url中的2...
摘要:課程的第單元中嵩天老師給出的中國大學排名爬蟲優(yōu)化代碼如果把中的改為就會出錯,原因年各校排名數(shù)字的格式為而年各校排名數(shù)字的格式為,針對這個問題,我對嵩天老師的代碼做了一點修改,可能不是很漂亮,但是實現(xiàn)了功能我很開心。 本文是學習http://www.icourse163.org/lea... 課程的代碼實現(xiàn)和反思。 課程的第6單元中嵩天老師給出的中國大學排名爬蟲優(yōu)化代碼如果把url中的2...
摘要:一個前端菜鳥的成長記現(xiàn)在才總結似乎有點晚,但聊勝于無,記錄一下我的,畢業(yè)的第一年,對于人生意義重大的一年。感謝勇哥新哥,給予我機會去做更多的嘗試。 一個前端菜鳥的成長記 現(xiàn)在才總結似乎有點晚,但聊勝于無,記錄一下我的2016,畢業(yè)的第一年,對于人生意義重大的一年。 我的求職之路 打從進入了大四之后,便深深的意識到了就業(yè)的壓力,并一直在做著邁向社會的準備。從2015年9月開始,便開始投簡...
摘要:不覺間,已悄然離去恍然后,正慢慢襲來。已完成一期內容,只包含買家點餐功能,二期準備做賣家及支付功能。經(jīng)過考慮和評估,我決定對這兩個選擇進行一個折中。項目部署,及代理轉發(fā)等配置。發(fā)現(xiàn)最近,已經(jīng)對非技術類書籍少了很多興趣。 不覺間,2016已悄然離去;恍然后,2017正慢慢襲來。 又到了總結過去,展望未來的時候了,那就先總結16年的收獲和經(jīng)驗教訓,再展望17年對自己及行業(yè)的一些期望吧。 1...
摘要:不覺間,已悄然離去恍然后,正慢慢襲來。已完成一期內容,只包含買家點餐功能,二期準備做賣家及支付功能。經(jīng)過考慮和評估,我決定對這兩個選擇進行一個折中。項目部署,及代理轉發(fā)等配置。發(fā)現(xiàn)最近,已經(jīng)對非技術類書籍少了很多興趣。 不覺間,2016已悄然離去;恍然后,2017正慢慢襲來。 又到了總結過去,展望未來的時候了,那就先總結16年的收獲和經(jīng)驗教訓,再展望17年對自己及行業(yè)的一些期望吧。 1...
閱讀 1789·2023-04-25 14:33
閱讀 3389·2021-11-22 15:22
閱讀 2188·2021-09-30 09:48
閱讀 2700·2021-09-14 18:01
閱讀 1750·2019-08-30 15:55
閱讀 3012·2019-08-30 15:53
閱讀 2149·2019-08-30 15:44
閱讀 657·2019-08-30 10:58