網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)原理詳解
- 通用網(wǎng)絡(luò)爬蟲:
獲取初始的URL;
根據(jù)初始的URL爬取頁面并獲得新的URL瑟幕;
將新的URL放到URL隊(duì)列中只盹;
從URL隊(duì)列中讀取新的URL,并根據(jù)新的URL爬去網(wǎng)頁殖卑,同時(shí)從新網(wǎng)頁中獲取新URL孵稽,重復(fù)上述過程十偶;
滿足設(shè)置的停止條件時(shí)停止爬取园细。 - 聚焦網(wǎng)絡(luò)爬蟲:見#395
爬行策略
深度優(yōu)先爬行策略、廣度優(yōu)先爬行策略狮崩、大站優(yōu)先策略鹿寻、反鏈策略、其他
網(wǎng)頁更新策略
網(wǎng)站更新后需要重新爬取坦敌,網(wǎng)站更新的頻率與爬蟲訪問網(wǎng)站的頻率越相近效果越好招刹;
用戶體驗(yàn)策略:優(yōu)先更新排名結(jié)果靠前的網(wǎng)頁
歷史數(shù)據(jù)策略、
聚類分析策略
網(wǎng)頁分析算法
- 基于用戶行為的網(wǎng)頁分析算法:用戶訪問頻率训柴、訪問時(shí)長(zhǎng)妇拯、單擊率等對(duì)網(wǎng)頁進(jìn)行綜合評(píng)價(jià);
- 基于網(wǎng)絡(luò)拓?fù)涞木W(wǎng)頁分析算法:鏈接關(guān)系仗嗦、PageRank甘凭;
- 基于網(wǎng)頁內(nèi)容的網(wǎng)頁分析算法:數(shù)據(jù)丹弱、文本等內(nèi)容特征。
身份識(shí)別
正規(guī)的爬蟲一般會(huì)告訴對(duì)應(yīng)網(wǎng)頁的網(wǎng)站站長(zhǎng)其爬蟲身份蜓洪,網(wǎng)站管理員則可以通過爬蟲告知的身份信息對(duì)爬蟲身份進(jìn)行識(shí)別坯苹。
一般的,會(huì)通過HTTP
請(qǐng)求中的User Agent
字段告知自己的身份信息恐仑;爬蟲訪問網(wǎng)站時(shí),首先會(huì)根據(jù)該站點(diǎn)下的Robots.txt
文件來確定可爬取的網(wǎng)頁范圍菊霜,Robots
協(xié)議是需要網(wǎng)絡(luò)爬蟲共同遵守的協(xié)議坚冀。
實(shí)現(xiàn)技術(shù)
- Python:框架豐富济赎,多線程能力較強(qiáng)鉴逞;
- Java:大型爬蟲項(xiàng)目;
- PHP:后端處理很強(qiáng)司训,并發(fā)能力弱构捡;
- Node.JS:支持高并發(fā)與多線程;
- C++:運(yùn)行速度極快壳猜,適合大型爬蟲項(xiàng)目勾徽,成本較高;
- Go:高并發(fā)统扳;