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