本章主要内容:网络爬虫的实现原理与实现技术;metaseeker爬虫案例。
3.1 网络爬虫实现原理详解
爬虫类型多样,但原理相近;以通用网络爬虫和聚焦网络爬虫为例。
1.通用网络爬虫
图3-1 通用网络爬虫实现原理及过程
注意停止条件的设置,以免无限循环下去。
2.聚焦网络爬虫
图3-2 聚焦网络爬虫的基本原理及实现过程
比通用网络爬虫多三步:1.目标的定义、4.无关链接的过滤、6.下一步要爬取的URL地址的选取。
第6步中涉及到搜索算法,聚焦网络爬虫因其目的性,爬取顺序对执行效率影响巨大,所以根据搜索策略确定下一步要爬取哪些URL地址。
3.2 爬行策略
解决先爬取哪个,后爬取哪个的问题。
主要爬行策略有:深度优先策略、广度优先策略、大站优先策略、反链策略等。
重点介绍深度和广度优先策略:
图3-3 某网站的网页层次结构示意图
如采用深度优先策略:A->D->E->B->C->F->G;如采用广度优先策略:A->B->C->D->E->F->G。
3.3 网页更新策略
网页何时更新,更新的频率怎么决定?
常见更新策略3种:用户体验策略、历史数据策略、聚类分析策略。
前两者都需要历史数据作为支撑;后者则是新网页的分析策略。
聚类分析策略:依据网页的共性,将共性较多的网页聚为一类,类的数目不一定,然后在单个聚类中抽样分析得出该聚类的更新频率,即得出爬取频率。(物以类聚)
图3-4 网页更新策略之聚类算法
3.4 网页分析算法
爬虫爬取数据后,存储到原始数据库中,搜索引擎分析确定各网页的重要性,从而影响用户检索的排名结果。
3种:基于用户行为、网络拓扑、网页内容的网页分析算法
拓扑:结构关系。
3.5 身份识别
爬虫爬取网站时会告诉站长其身份,管理员通过这个身份对爬虫的身份进行识别,这个过程就是身份识别过程。
一般是通过HTTP请求中的User Agent字段发送身份信息。
网站下有一个文件叫Robots.txt,该文件规定了该网站可以爬取的范围。我们都应该遵守这份网络规则,不应该无限制的任意爬取,这样才是爬虫方和站点服务方的双赢。
3.6 网络爬虫技术实现
大部分语言都可以实现网络爬虫,有的框架丰富,多行程能力强,简单易学、代码简介,如Python;
有的适合大型爬虫项目,如Java;
有的支持高并发与多线程,如NodeJS和Go;
有的运算速度快,适合大项目,但成本高,如C++;
有的并发能力不足,如PHP。
都可实现,根据需求选择合适的语言,合适的框架,最大程度的降低开发难度,这样才是正道。
接下来会做一个实现,用metaseeker软件抓去当当网的信息。
- 本文作者: Linking
- 本文链接: https://linking.fun/2017/06/25/精通Python网络爬虫-第三章-网络爬虫实现原理与实现技术/
- 版权声明: 版权所有,转载请注明出处!