取。这个算法的核心思想是,认为越靠近初始网页的网页,相关程度越高,所以根据
广度优先算法获取到的网页,整体上相关程度会高一些,但实则随着网页层次的深入,
大量的不相关网页也会被爬取,降低爬取速度。
2. 深度优先搜索:深度优先搜索,和其他深度优先算法一样,优先保证算法深度,即在
爬取过程中,先从初始页面,获取到一个链接后,直接爬取该链接内容,继续再从这
个链接获取下一个链接,这样处理完一条路线后,再次处理下一条路线。这个算法也
并不复杂,但是由于深度优先算法,优先爬取离初始页面远的页面,这样爬取到的页
面相关程度很低,价值不高,一般很少采用。但由于知乎网问答页面组织方式的特殊
性,本系统的爬虫采用的是深度优先算法,后面会详细叙述。
3. 最佳优先搜索:这个搜索策略下,会有一个分析算法,用于分析相应链接与主题相关
程度,用于评判一个链接的好坏程度,该搜索策略下,会从队列中选取分析算法筛选
出来的有效链接开始爬取网页,每次都只爬取分析算法认为有效的链接,减少了爬取
无用网页带来的爬取速度减慢问题。算法核心在于如何设计分析算法。最佳优先搜索
策略本质上是一个局部最优算法。
3.3 爬虫常见问题以及解决办法
爬虫基本原理十分简单,但由于爬虫的辨识度太高,即爬虫的机械重复程度很高,
很容易识别出爬虫,一些网站就会对一些来历不明或者用意不明的爬虫进行识别和限制,
一旦识别出非搜索引擎爬虫,就会采用各种各样的手段限制你的动作,比如限制请求数
目,暂时封禁相应 IP 访问,暂时封禁相关帐号,暂时封禁相关网段等。
解决办法有很多,下面简单说明几个方法:
1. 构造合理的 HTTP 请求头
HTTP 的请求头是在你每次向网络服务器发送请求时,传递的一组属性和配置信息。
HTTP 定义了十几种的请求头类型,不过大多数都不常用。只有下面的 7 个字段被大多
数浏览器用来初始化所有网络请求,表 3-1 是我浏览谷歌的时候的请求头情况。
表 3-1 HTTP 请求头
text/html,application/xhml+xml,application/xml;q=0.9,
image/webp,*/*;q=0.8
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0)
Gecko/20100101 Firefox/59.0
评论0