【作者主頁(yè)】:吳秋霖
【作者介紹】:Python領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、阿里云博客專家、華為云享專家。長(zhǎng)期致力于Python與爬蟲(chóng)領(lǐng)域研究與開(kāi)發(fā)工作!
【作者推薦】:對(duì)JS逆向感興趣的朋友可以關(guān)注《爬蟲(chóng)JS逆向?qū)崙?zhàn)》,對(duì)分布式爬蟲(chóng)平臺(tái)感興趣的朋友可以關(guān)注《分布式爬蟲(chóng)平臺(tái)搭建與開(kāi)發(fā)實(shí)戰(zhàn)》
還有未來(lái)會(huì)持續(xù)更新的驗(yàn)證碼突防、APP逆向、Python領(lǐng)域等一系列文章
1. 寫(xiě)在前面
??隨筆寫(xiě)一下,最近比較忙。這里我還是拿開(kāi)源情報(bào)或者輿情項(xiàng)目來(lái)展開(kāi)描述,因?yàn)楝F(xiàn)在有自研爬蟲(chóng)系統(tǒng)的企業(yè)基本上所涉及的數(shù)據(jù)源第一個(gè)比較多,第二個(gè)則是數(shù)據(jù)更新及時(shí)性高。爬蟲(chóng)業(yè)務(wù)單一少的基本也到不上平臺(tái)級(jí),爬蟲(chóng)寫(xiě)完基本掛到容器里面就完了,有的甚至可能容器都用不上!
輿情項(xiàng)目中數(shù)據(jù)采集是一個(gè)極其關(guān)鍵的部分!核心技術(shù)則是爬蟲(chóng)技術(shù)的構(gòu)建,這里說(shuō)的不是指簡(jiǎn)單的一些爬蟲(chóng)腳本程序,數(shù)據(jù)源肯定是很多的,每天幾乎覆蓋的源或多或少都在變化,數(shù)據(jù)源狀態(tài)或者頁(yè)面結(jié)構(gòu)變化
這里我畫(huà)了一個(gè)基礎(chǔ)且常見(jiàn)的爬蟲(chóng)平臺(tái)架構(gòu):
2. 數(shù)據(jù)獲取挑戰(zhàn)
??數(shù)據(jù)需求范圍廣,難以全面采集!很多產(chǎn)品需要數(shù)據(jù)的賦能。對(duì)數(shù)據(jù)的需求往往需要采集全網(wǎng)或特定領(lǐng)域的數(shù)據(jù),在有限的時(shí)間和成本內(nèi),批量深度爬取,尤其目前國(guó)內(nèi)的一些渠道數(shù)據(jù)獲取采集的難度越來(lái)越大
數(shù)據(jù)獲取時(shí)間長(zhǎng),難以保證時(shí)效性!如果在短時(shí)間內(nèi)需要的數(shù)據(jù)量龐大,并且及時(shí)性高!導(dǎo)致爬取到數(shù)據(jù)的時(shí)間過(guò)長(zhǎng),難以將數(shù)據(jù)實(shí)時(shí)的流轉(zhuǎn)并供給業(yè)務(wù)分析應(yīng)用。數(shù)據(jù)產(chǎn)生的時(shí)間過(guò)長(zhǎng),導(dǎo)致數(shù)據(jù)的時(shí)效價(jià)值被嚴(yán)重降低
數(shù)據(jù)源防護(hù)技術(shù)加大采集數(shù)據(jù)的難度!越來(lái)越多的網(wǎng)站具有大數(shù)據(jù)防護(hù)技術(shù),并不斷更新增強(qiáng)反爬策略,以及各國(guó)加大對(duì)隱私信息的保護(hù),這些措施都在不斷加大數(shù)據(jù)采集的難度
3. 基礎(chǔ)架構(gòu)
??既然是分布式系統(tǒng),那么爬蟲(chóng)肯定是比較多的,這些爬蟲(chóng)的任務(wù)必須分配到多臺(tái)機(jī)器上執(zhí)行。所以這些爬蟲(chóng)程序如何部署?部署在哪?當(dāng)然是容器里面,為了更加便捷的部署、拓展與管理、Kubernetes+Docker將會(huì)成為分布式爬蟲(chóng)采集系統(tǒng)中基礎(chǔ)架構(gòu)承載底座!
4. 爬取管理
-
爬蟲(chóng)狀態(tài):爬蟲(chóng)分布式在很多臺(tái)服務(wù)器上,不知道在哪個(gè)服務(wù)器上的哪個(gè)爬蟲(chóng)程序出了問(wèn)題是很痛苦的事情,甚至抓取數(shù)據(jù)量猛增導(dǎo)致服務(wù)器掛掉都不知道。所以,需要能對(duì)服務(wù)器監(jiān)控,對(duì)服務(wù)器上每一個(gè)爬蟲(chóng)程序進(jìn)行監(jiān)控。監(jiān)控每個(gè)爬蟲(chóng)運(yùn)行是否正常,監(jiān)控每個(gè)運(yùn)行爬蟲(chóng)的服務(wù)器是否正常
-
采集狀態(tài):抓取的站點(diǎn)時(shí)常發(fā)生變化,我們就需要知道每個(gè)目標(biāo)采集的站點(diǎn)抓取的數(shù)據(jù)是否都正常的采集下來(lái)了,通過(guò)給每個(gè)爬蟲(chóng)編上采集任務(wù)編號(hào),展示在web界面上,就可以直觀的看見(jiàn)數(shù)據(jù)采集下來(lái)的效果。通過(guò)郵件告警和每天發(fā)送郵件統(tǒng)計(jì)數(shù)據(jù),可以實(shí)時(shí)對(duì)采集狀態(tài)進(jìn)行監(jiān)控
-
任務(wù)調(diào)度:任務(wù)調(diào)度模塊實(shí)現(xiàn)數(shù)據(jù)爬取任務(wù)的分布式任務(wù)調(diào)度,包括添加、執(zhí)行、監(jiān)控、停止、刪除爬蟲(chóng)的這些功能。系統(tǒng)能夠自動(dòng)根據(jù)任務(wù)優(yōu)先級(jí)和資源狀態(tài)進(jìn)行任務(wù)分配和任務(wù)調(diào)整,在數(shù)據(jù)爬取任務(wù)發(fā),可以看看我之前寫(xiě)的關(guān)于Scrapyd爬蟲(chóng)部署的文章:Scrapyd核心源碼剖析及爬蟲(chóng)項(xiàng)目實(shí)戰(zhàn)部署
-
資源管理:資源管理是對(duì)某些站點(diǎn)的賬號(hào)資源、IP 資源和采集節(jié)點(diǎn)等與采集相關(guān)的資源信息的集中管理
-
狀態(tài)監(jiān)測(cè):狀態(tài)監(jiān)測(cè)模塊提供對(duì)網(wǎng)頁(yè)頁(yè)面改版、網(wǎng)頁(yè)反爬策略、節(jié)點(diǎn)運(yùn)行狀態(tài)和數(shù)據(jù)產(chǎn)量等進(jìn)行告警的功能,并以通知的方式實(shí)時(shí)推送到web前端,可以看看之前我寫(xiě)的這篇告警設(shè)計(jì)文章:【爬蟲(chóng)系統(tǒng)設(shè)計(jì)系列】好的爬蟲(chóng)系統(tǒng)一定要這樣去設(shè)計(jì)告警功能)
5. 數(shù)據(jù)采集
-
模板配置:例如新聞這類(lèi)的網(wǎng)站源,頁(yè)面的結(jié)構(gòu)基本都是一樣的,列表到詳情頁(yè)??梢圆捎媚0迮渲玫姆桨附唤oXPATH工程師,模板爬蟲(chóng)功能設(shè)計(jì)可以參考我的這篇文章【爬蟲(chóng)系統(tǒng)設(shè)計(jì)系列】模板爬蟲(chóng)的動(dòng)態(tài)配置策略設(shè)計(jì)與實(shí)現(xiàn)
-
可視化采集:爬取難度低的這類(lèi)網(wǎng)站可以通過(guò)可視化配置的方式,所見(jiàn)即所得通過(guò)點(diǎn)擊頁(yè)面生成爬蟲(chóng)工程的方式。感興趣的可以去看看開(kāi)源可視化爬蟲(chóng)項(xiàng)目:可視化爬蟲(chóng)-Portia
-
人工配置:這類(lèi)網(wǎng)站一般難度較高、需要定制化開(kāi)發(fā)、更新頻率高!
-
智能解析:像新聞、小說(shuō)、應(yīng)用市場(chǎng)這些頁(yè)面特征相似的網(wǎng)站可以采用通用抽取算法!
6. 增量與去重設(shè)計(jì)
??這一部分可以說(shuō)是非常重要也是經(jīng)常接觸的,除了一次性爬蟲(chóng)外幾乎都要添加去重的功能,有的則需要定期或?qū)崟r(shí)增量爬取
-
增量設(shè)計(jì):可以根據(jù)時(shí)間,記錄最新更新的時(shí)間,這個(gè)是比較常見(jiàn)的,或者說(shuō)咱們對(duì)頁(yè)面的內(nèi)容計(jì)算哈希值,將哈希值與上次爬取時(shí)存儲(chǔ)的哈希值進(jìn)行比較,不同則更新!
-
去重設(shè)計(jì):可以根據(jù)URL、數(shù)據(jù)內(nèi)容計(jì)算指紋!可以使用Bloom或者是Set具體根據(jù)實(shí)際的業(yè)務(wù)場(chǎng)景跟數(shù)據(jù)體量去做一個(gè)技術(shù)選型文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-753890.html
??好了,到這里又到了跟大家說(shuō)再見(jiàn)的時(shí)候了。創(chuàng)作不易,幫忙點(diǎn)個(gè)贊再走吧。你的支持是我創(chuàng)作的動(dòng)力,希望能帶給大家更多優(yōu)質(zhì)的文章文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-753890.html
到了這里,關(guān)于從0到1構(gòu)建智能分布式大數(shù)據(jù)爬蟲(chóng)系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!