网络爬虫实现原理详解
- 通用网络爬虫:
获取初始的URL;
根据初始的URL爬取页面并获得新的URL;
将新的URL放到URL队列中;
从URL队列中读取新的URL,并根据新的URL爬去网页,同时从新网页中获取新URL,重复上述过程;
满足设置的停止条件时停止爬取。 - 聚焦网络爬虫:见#395
爬行策略
深度优先爬行策略、广度优先爬行策略、大站优先策略、反链策略、其他
网页更新策略
网站更新后需要重新爬取,网站更新的频率与爬虫访问网站的频率越相近效果越好;
用户体验策略:优先更新排名结果靠前的网页
历史数据策略、
聚类分析策略
网页分析算法
- 基于用户行为的网页分析算法:用户访问频率、访问时长、单击率等对网页进行综合评价;
- 基于网络拓扑的网页分析算法:链接关系、PageRank;
- 基于网页内容的网页分析算法:数据、文本等内容特征。
身份识别
正规的爬虫一般会告诉对应网页的网站站长其爬虫身份,网站管理员则可以通过爬虫告知的身份信息对爬虫身份进行识别。
一般的,会通过HTTP
请求中的User Agent
字段告知自己的身份信息;爬虫访问网站时,首先会根据该站点下的Robots.txt
文件来确定可爬取的网页范围,Robots
协议是需要网络爬虫共同遵守的协议。
实现技术
- Python:框架丰富,多线程能力较强;
- Java:大型爬虫项目;
- PHP:后端处理很强,并发能力弱;
- Node.JS:支持高并发与多线程;
- C++:运行速度极快,适合大型爬虫项目,成本较高;
- Go:高并发;