网络舆情分析技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 网络蜘蛛概念

2.3.1 基本概念

搜索引擎一直专注于提升用户的体验度,其用户体验度则反映在三个方面:准、全、快,即查准率、查全率和搜索速度,其中的难点在于准和全。搜索引擎的“准”,需要保证搜索到的前几十条结果都和搜索词密切相关;搜索引擎的“全”,则需保证不遗漏某些重要的信息,而且能找到最新的网页。这就需要搜索引擎有一个强大的网页搜集器,即网络蜘蛛。

网络蜘蛛是搜索引擎的核心部件,它的性能好坏直接影响到搜索引擎的整体性能和处理速度。在搜索引擎系统中,网络蜘蛛主要负责抓取网页、图片和文档等信息。其抓取过程是从给定的起始URL开始,沿着网页中的链接,按照一定的搜索策略进行遍历搜索,下载相应的网页,解析出网页中的超链接URL,看是否已被访问过,将那些未访问过的URL加入到待爬行队列,然后再搜索其他链接指向的网页,循环往复。整个过程如同一个蜘蛛在蜘蛛网(Web)上爬行,因此网络蜘蛛也称网络爬虫。

通用搜索引擎所使用的网页搜集器为通用网络蜘蛛系统(简称通用蜘蛛),主题搜索引擎所使用的网页搜集器为面向主题的网络蜘蛛系统(简称主题蜘蛛)。

2.3.2 通用蜘蛛

1.通用蜘蛛组成结构

通用搜索引擎如同一个公共图书馆,通用蜘蛛就是这个图书馆的采购员,它试图满足各类用户的查询需求,所搜集的网页内容广而泛。通用蜘蛛系统结构如图2-3所示。

图2-3 通用蜘蛛系统结构

其中,各个主要模块的功能如下:

(1)爬行模块。该模块是网络蜘蛛和互联网的接口,主要作用是通过HTTP协议来完成对网页数据的采集,然后将采集到的网页提交给其他模块做进一步处理。

(2)网页分析模块。该模块对所采集的网页进行分析,提取其中满足用户要求的URL链接,加入到URL队列中。如果网页链接中给出的URL是一个相对路径,则需要将相对路径转变为绝对路径。

(3)提取链接模块。该模块的主要作用是去除重复链接和循环链接。

(4)网页文本库。用来存储经过网页分析处理的网页,供后期处理使用。

(5)URL队列。用来存放从网页中提取出的URL,当URL队列为空时,网络蜘蛛程序停止爬行。

(6)起始URL。提供种子URL,用来启动网络蜘蛛程序。

2.通用蜘蛛工作原理

通用蜘蛛的目标就是尽可能多地采集网页,在这一过程中并不关注网页采集的顺序和被采集网页的相关主题。这就需要消耗较多的系统资源和网络带宽,并且这些资源的消耗并没有换来对所采集网页的较高利用率。

通用蜘蛛从网站某一个网页(通常是首页)开始,读取网页内容,并抽取出网页中的其他超链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到满足系统的停止条件,其工作流程如图2-4所示。

图2-4 通用蜘蛛工作流程

3.通用蜘蛛搜索策略

通常,通用蜘蛛在抓取网页时采用两种搜索策略:深度优先搜索策略和广度优先搜索策略。

深度优先搜索策略是指网络蜘蛛从起始网页开始,一个链接一个链接地跟踪下去,处理完这条路径之后再转入下一个起始网页,继续跟踪链接,直到遍历所有的网页及链接,搜索过程结束。这种搜索策略的优点是网络蜘蛛能够遍历一个Web站点或深层嵌套的文档集合。缺点是当Web站点的网页文件结构比较深时,有可能发生陷入进去而出不来的情况,即网络蜘蛛的陷入问题。

广度优先搜索策略是指网络蜘蛛从起始网页开始,首先搜索完一个网页中所有的链接,然后再继续搜索下一层,直到底层为止。这种搜索策略的优点是能够保证对浅层链接的优先处理,即使遇到一个深层分支时,也不会导致发生网络蜘蛛陷入深层文件中出不来的情况,并且能够在两个网页文件之间找到最短路径。广度优先搜索策略通常是网络蜘蛛的最佳策略,不仅容易实现,并且还能够实现并行处理,提高其抓取速度。然而,对于深层嵌套的网页文件集,广度优先搜索策略需要花费较长的时间才能搜索深层的网页文件。

两种搜索策略的区别可以用图2-5给出的示例来说明。

图2-5 通用蜘蛛搜索策略

假设网络蜘蛛从A出发,两种搜索策略的搜索路径如表2-1所示,可见它们的搜索路径是不同的。

表2-1 两种搜索策略的搜索路径

在主流的网络蜘蛛系统中,一般采用广度优先搜索策略为主、深度优先搜索策略为辅的搜索策略。对于某些不被引用或很少被引用的网页,广度优先搜索策略可能会遗漏这些孤立的网页,而深度优先搜索策略可以搜索到这些网页。

2.3.3 主题蜘蛛

1.主题蜘蛛组成结构

主题搜索引擎如同一个专业图书馆,主题蜘蛛就是这个图书馆的采购员,它只需满足某一类用户的查询需求,只搜集与主题内容相关的网页。主题蜘蛛的组成结构如图2-6所示。

图2-6 主题蜘蛛组成结构

主题蜘蛛主要由三个关键模块组成:

(1)网页分析模块。该模块采用了文本分类模型和算法对网页相关性进行分析。在爬行开始前,首先需要对样本网页信息进行学习,训练成一个主题相似度模型。当爬行到一个被认为与主题相关的网页后,将该网页提交给页面过滤模块进行主题相似度值计算,如果该网页相似度值大于或等于给定的阈值,则说明该网页与主题相关,则存入网页文本库;否则说明该网页与主题相关性小,丢弃该网页。

(2)链接分析模块。该模块是主题蜘蛛的核心模块,主要用于评估从主题相关网页中解析出来的URL链接与主题的相似度,并根据相似度值提供相应的搜索策略来指导网络蜘蛛的爬行过程。URL链接的主题相似度值越大,爬行的优先级就越高,在URL队列中排列越靠前。反之,如果某一URL链接的主题相似度值小于给定的阈值,则将该URL链接及其所隐含的子链接一并去除。

(3)爬行模块。该模块是任何网络蜘蛛程序都不可缺少的通用模块。爬行模块首先从待爬行URL队列中取出排在首位的URL,将该URL对应的网页抓取到本地,然后将该页面交给页面分析模块处理。在整个爬行过程中,爬行的次序和搜索策略都是由链接分析模块提供的。

2.主题蜘蛛工作原理

与通用蜘蛛不同的是,主题蜘蛛在爬行开始前需要就某个主题对样本网页信息进行学习和训练,建立相应主题相似度模型。在启动爬行后,首先从起始URL开始爬行,按照设定的搜索策略来搜索网页,对于所获取的网页,首先进行网页相关性分析,去除与主题不相关的网页;然后对所提取的URL进行链接相关性分析,设置该URL的优先级并存入URL队列。当满足停止条件时,爬行过程结束。其工作流程如图2-7所示。可见,存入网页文本库中的网页都是与主题相关的网页。

图2-7 主题蜘蛛工作流程

3.主题蜘蛛搜索策略

由于主题信息一般只占整个Web空间很小的一部分,并且具有分散性,因此传统的深度优先搜索策略和广度优先搜索策略在Web信息搜集的效率上难以达到期望要求。由于主题蜘蛛的特点是采集的信息内容只限于特定的主题或专门的领域,因此在搜索信息过程中没有必要对整个Web空间进行遍历搜索,只需要选择与主题相关的网页进行访问即可。对主题搜索引擎而言,提高网络蜘蛛搜索效率的关键在于如何将不相关的网页快速地过滤掉,因为网页过滤的速度和准确性将会直接影响网络蜘蛛的性能。

主题蜘蛛在爬行过程中,如果对所发现的URL链接都不加选择的话,则大量的无关URL链接就会极大地浪费网络蜘蛛的处理时间。为了避免或减少这种现象的发生,主题蜘蛛必须对所发现的URL链接进行预测,只访问那些预测值符合给定阈值的URL链接。对于预测值符合要求的网页,系统还要对所抓取的网页进行主题相关性分析,以保证最终得到的网页是与主题相关的。

相比于通用蜘蛛,主题蜘蛛能够有效地发现主题相关的网页,并且能通过网页内容和链接结构来指导其资源发现过程。图2-8反映了通用蜘蛛和主题蜘蛛的爬行过程中的差异。

图2-8 通用蜘蛛和主题蜘蛛的爬行区别

其中,浅色框代表主题无关的网页,黑色框代表主题相关的网页,虚线代表链接,箭头代表访问次序。

(1)通用蜘蛛以广度优先搜索策略,沿着每个链接进行爬行。假设从起始网页到目标网页需要爬行i步,那么在爬行到目标网页前必须先将i-1步内的网页爬行完。

(2)主题蜘蛛首先确定最有可能与主题相关的链接,忽略主题无关的网页。假设从起始网页到目标网页需要爬行i步,那么在爬行到目标网页前仅爬行i-1步内的网页的一个子集,在理想情况下,只要爬行i个链接就可以达到目标网页,这大大节省了爬行时间,提高了爬行效率。

如果同一个主题相关的网页在Web网站上是平均分布的,则主题蜘蛛和通用蜘蛛在效率上没有明显的差别。经过大量的研究表明,Web网站上的网页分布具有主题聚合性。利用这一特性,主题蜘蛛就可以优先对主题相关网页中的链接进行爬行。

与通用蜘蛛相比,主题蜘蛛更加专业化和可定制化。通用网络蜘蛛的目标是尽可能多地采集网页,在这一过程中它并不关注网页采集的顺序和被采集网页的主题,而主题蜘蛛能够定向性地采集与主题相关的网页,忽略无关的网页,并且还可以根据主题相似度值进行优先采集。因此,主题蜘蛛具有如下特点:

(1)抓取目标描述和定义。在主题蜘蛛采集网页之前,首先要确定一个抓取的主题。

(2)URL搜索策略。它决定着待爬行URL的访问次序。通用蜘蛛以搜集海量数据为目标,在爬行时只需按照广度优先搜索策略或者深度优先搜索策略来抓取网页,尽量提高其爬行的范围。而主题蜘蛛因其自身的特点,在爬行过程中需要考虑优先访问与主题相关的网页,即考虑如何管理待爬行的URL队列,从而使得每次爬行都从相似度值最大的URL开始。

(3)网页相关性分析与过滤。对于已经下载的网页,需要通过适当的主题相似度模型和算法来判别该网页是否与主题相关。因此,主题相似度模型和算法的优劣将对网页和链接的主题相似度计算性能产生很大的影响。