(本次是继上次网络数据采集的基础知识的后续更新。)(总结与分析在东软教育在线线上学习的学习心得。)如有错误,欢迎各位技术大牛指正。
搜索策略
*常见的网页搜索策略可以分为,深度优先、广度优先和最佳优先三种。*
广度优先搜索策略是指在爬取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。该算法的设计和实现相对简单,为覆盖尽可能多的页面,一般使用广度优先搜索策略,也有很多研究将广度优先搜索策略,应用于聚焦网络爬虫中。其基本思想,是认为与初始URL在一定链接距离内的网页,具有主题相关性的概率是很大的。另外一种方法是将广度优先搜索与网页过滤技术结合使用,先用广度优先策略爬取网页,再将无关的网页过滤掉。但这个策略的缺点在于,随着爬取网页的增多,大量的无关网页将被下载并过滤,算法的效率将变低。
最佳优先搜索策略是按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行爬取。它只访问经过网页分析算法,预测为“有用”的网页,因为最佳优先策略是一种局部最优搜索算法。在爬取路径上的很多相关网页可能被忽略。因此需要将最佳优先搜索策略。结合的具体的应用进行改进,以跳出局部最优点。
深度优先搜索策略从起始网页开始,选择一个URL进入,分析这个网页中的URL,选择下一个再进入。如此一个链接一个链接地爬取下去,直到处理完一条路线之后再处理下一条路线。深度优化搜索策略设计较为简单,然而门户网站提供的链接往往是最具有最高的价值,同时这种策略的爬取深度直接影响着爬取命中率及爬取效率。正确的爬取深度是该种策略的关键,相对于其他两种策略而言,此种策略很少使用。
网页抽取技术
基于机器学习的网页抽取算法大致可以分为以下几类:
1、基于启发式规则和无监督学习的网页抽取算法
2、基于分类器的网页抽取算法
3、基于网页模板自动生成的网页抽取算法
基于启发式规则和无监督学习的网页抽取算法是目前最简单也是最有效的算法,且其具有较高的通用性,即算法往往在不同语种,不同结构的网页上都有效。早期的这类算法大多数,没有将网页解析为DOM树,而是将网页解析为一个token序列。例如下面这段html源码。
<body>
<div>广告...(10字)</div>
<div class="main">正文...(600字)</div>
<div class="foot">页脚...(7字)</div>
</body>
因此,找出token序列中的一个子序列,使得这个子序列中token对应的分数的综合达到最大,则这个子序列就是网页中的正文。从另一个角度来理解这个规则,即从heml源码字符串中,找出一个子序列,这个子序列应该尽量包含较多的文本和较少的标签。无监督学习在第一类算法中也起到重要作用,很多算法利用聚类的方法将网页的正文和非正文自动分为两类。
基于分类器的网页抽取算法它的实现流程大致为:找几千个网页作为训练集,对网页的正文和非正文(即需要抽取和不需要抽取的部分,进行人工标注。)例如一些算法将DOM树的标签类型(div,p,body等)作为特征之一,选择适合的分类器,利用特征进行训练。
基于网页模板自动生成的网页抽取算法抽取算法有很多种。咱们这次举例使用多个相同结构网页(通过URL判断)的对比,找出其中的异同,页面间的共性的部分是非正文。页面间差别较大的部分有可能是正文。例如在一些网站中,所有的网页页脚都相同,都是备案信息或者版权申明之类的。这是页面之间的共性,因此算法认为这部分是非正文,而不同网页的正文往往是不同的,因此算法识别出正文页较容易。
我们可以看出爬虫的形态是多种多样的,然后在使用爬虫的过程中,还存在很多的限制。这里的限制主要是指网站的Robots协议。*(Robots协议的全称是“网络爬虫排除标准”也称爬虫协议、机器人协议等,网站通过Robots协议告诉搜索引擎哪些页面能被爬取、哪些页面不能被爬取。)*使用Robots协议可以屏蔽一些网站中比较大的文件,例如图片、音乐、视频等。Robots协议是国积互联网通行的道德规范:1、搜索技术应服务于人类,同时尊重信息提供者的意愿,并维护其隐私权;2、网站有义务保护其使用者的个人信息和隐私不被侵犯。
根据Robots协议,在网站域名的根目录下放一个名为robots.txt文件,里面可以指定不同的网络爬虫能访问的页面和禁止访问的页面。首先获取到这个文件,并解析其中的规则,然后根据规则来采集网站的数据。为爬虫提供一堆访问地址,爬虫接着爬取这些新发现的链接指向的网页。上述过程要循环往复的执行多次。
总结:
本次旨在介绍网页搜索策略以及爬虫道德,欢迎有兴趣的大佬学习,如有错误欢迎指正。