网络爬虫摘要随着互联网的日益壮大,搜索引擎技术飞速发展。搜索引擎已成为人们在浩瀚的网络世界中获取信息必不可少的工具,利用何种策略有效访问网络资源成为专业搜索引擎中网络爬虫研究的主要问题。文章介绍了搜索引擎的分类及其工作原理.阐述了网络爬虫技术的搜索策略,对新一代搜索引擎的发展趋势进行了展望。关键词网络爬虫;策略;搜索引擎概念:网络爬虫也叫网络蜘蛛,它是一个按照一定的规则自动提取网页程序,其会自动的通过网络抓取互联网上的网页,这种技术一般可能用来检查你的站点上所有的链接是否是都是有效的。当然,更为高级的技术是把网页中的相关数据保存下来,可以成为搜索引擎。搜索引擎使用网络爬虫寻找网络内容,网络上的HTML文档使用超链接连接了起来,就像织成了一张网,网络爬虫也叫网络蜘蛛,顺着这张网爬行,每到一个网页就用抓取程序将这个网页抓下来,将内容抽取出来,同时抽取超链接,作为进一步爬行的线索。网络爬虫总是要从某个起点开始爬,这个起点叫做种子,你可以告诉它,也可以到一些网址列表网站上获取。网络爬虫的构成及分类网络爬虫又被称为做网络蜘蛛、网络机器人,主要用于网络资源的收集工作。在进行网络舆情分析时,首要获取舆情信息内容,这就需要用到网络爬虫(蜘蛛程序)这个工具,它是一个能自动提取网页内容的程序,通过搜索引擎从互联网上爬取网页地址并抓取相应的网页内容,是搜索引擎(SearchEngine)的重要组成部分。一个典型的网络爬虫主要组成部分如下:1.URL链接库,主要用于存放爬取网页链接。2.文档内容模块,主要用于存取从Web中下载的网页内容。3.文档解析模块,用于解析下载文档中的网页内容,如解析PDF,Word,HTML等。4.存储文档的元数据以及内容的库。5.规范化URL模块,用于把URL转成标准的格式。6.URL过滤器,主要用于过滤掉不需要的URL。上述模块的设计与实现,主要是确定爬取的内容以及爬去的范围。最简单的例子是从一个已知的站点抓取一些网页,这个爬虫用少量代码就可以完成。然而在实际互联网应用中,可能会碰到爬去大量内容需求,就需要设计一个较为复杂的爬虫,这个爬虫就是N个应用的组成,并且难点是基于分布式的。网络爬虫的工作原理传统网路爬虫的工作原理是,首先选择初始URL,并获得初始网页的域名或IP地址,然后在抓取网页时,不断从当前页面上获取新的URL放入候选队列,直到满足停止条件。聚焦爬虫(主题驱动爬虫)不同于传统爬虫,其工作流程比较复杂,首先需要过滤掉跟主题不相关的链接,只保留有用的链接并将其放入候选URL队列。然后,根据搜索策略从候选队列中选择下一个要抓取的网页链接,并重复上述过程,直到满足终止条件为止。与此同时,将所有爬取的网页内容保存起来,并进行过滤、分析、建立索引等以便进行性检索和查询。总体来讲,网络爬虫主要有如下两个阶段:第一阶段,URL库初始化然后开始爬取。第二阶段,爬虫读取没有访问过的URL,来确定它的工作范围。其中,对于所要抓取的URL链接,进行以下步骤:1.获取URL链接。2.解析内容,获取URL及相关数据。3.存储有价值的数据。4.对新抓取的URL进行规范化。5.过滤掉不相关的URL。6.将要抓取的URL更新到URL库中。7.重复步骤2,直到终止条件为止。网络爬虫的搜索策略目前,比较常见的网络爬虫搜索策略有以下三种:1、广度优先搜索策略。其主要思想是,由根节点开始,首先遍历当前层次的搜索,然后才进行下一层的搜索,依次类推逐层的搜索。这种策略多用在主题爬虫上,因为越是与初始URL距离近的网页,其具有的主题相关性越大。2、深度优先搜索策略。这种策略的主要思想是,从根节点出发找出叶子节点,以此类推。在一个网页中,选择一个超链接,被链接的网页将执行深度优先搜索,形成单独的一条搜索链,当没有其他超链接时,搜索结束。3、最佳优先搜索策略。该策略通过计算URL描述文本与目标网页的相似度,或者与主题的相关性,根据所设定的阈值选出有效URL进行抓取。爬行算法数据采集的效率及覆盖率受爬行算法的影响,现在比较流行和经典的爬行算法都是在Best-Frist算法的基础上改进和演化而来,各种算法的不同之处是:对待爬的URLs采用不同的启发式规则来进行打分并排序,同时在爬行之前或在爬行过程中对算法的参数进行优化。1、Best-First算法Best-First算法通过维持一个排序的URLs优先级队列,通过计算主题与所抓取网页P的cosinesimilarity(余弦相似度)来确定Urlsfrontier中的Urls的优先级。相似度计算公式如下:(2-1)式中,q为主题,p为抓取的网页。Best-Frist爬行算法如下:i.初始化,设定查询主题(topic),初始种子结点集合(starting_urls),爬取的最大网页数量(MAX_PAGES)以及frontier的容量限制(MAX_BUFFER);ii.把初始结点集合(starting_urls)中所有link插入到frontier队列(初始为空);iii.循环(当frontier队列非空且爬行的网页数MAX_PAGES)a)从frontier中取出优先级最高的链接(link):link=dequeue_link_with_max_score(frontier)b)访问并下载该link对应的页面(doc):doc=fetch_new_page(link)c)计算页面与主题的相似度(score):score=sim(topic,doc)d)抽取doc中的所有超链接(outlinks)e)循环(对于页面doc中的每一个超链接outlink)If(#frontier=MAX_BUFFER)(当frontier中链接的数量大于等于最大限制)Thendequeue_link_with_min_score(frontier)(从frontier删除最小优先级链接)Elseenqueue(frontier,outlink,score)(把链接和优先级加入frontier队列)f)循环结束(完成doc中的链接入frontier队列过程)iv.循环结束(结束爬行)2、SharkSearch算法SharkSearch算法是Hersovici等在Fish-Search算法的基础上进行了一些改进,使用向量空间模型构建查询q与网页、链接锚文本及链接附近文本的空间向量并计算其余弦相似度cosine值,相似度为介于0和1之间的连续值[0,1],从而代替Fish-Search算法的关键字及正则表达式匹配的相关性为0,1的离散值{0,1},Sharksearch算法同时利用了锚文本、链接附近文本和父页面相关度信息三方面的相关度线索。同Fish-Search算法一样,该算法也设定了爬行的深度界限(DepthBound)。在爬行队列中的每一个链接都关联一个深度界限和优先级度量值。深度界限由用户设定,链接的优先级值由父页面相关性、锚文本及链接附近文本共同决定。具体算法如下:i.初始化:设定初始节点,深度界限(D),爬行尺度(S),时限,搜索查询q;ii.设定初始节点的深度界限depth=D,并把节点插入到爬行队列(初始为空);iii.循环(当队列非空且下载的节点数S,并且在规定的下载时限内)a)计算child_node,inherited_score(child_node):Ifrelevance(current_node)0(当前节点相关)Theninherited_score(child_node)=*sim(q,current_node)其中为预先设定的衰减因子=0.5;Elseinherited_score(child_node)=*inherited_score(current_node);b)提取anchor_text及anchor_text_context(通过预先设定的边界,如:1);c)计算锚文本的相关度值:d)计算锚文本的相关度值:Ifanchor_score0,Thenanchor_context_score=1Elseanchor_context_score=sim(q,anchor_text_context);e)计算anchor的相关度,neihgorhood_score:其中为预设的常量等于0.8;f)计算孩子节点的潜在值其中为预设的常量小于1,一般设为0.5。iv.循环结束。网络爬虫技术的最新发展传统的网络爬虫技术主要应刷于抓取静态Web网页l31.随着AJAX/Web2.0的流行,如何抓取AJAX等动态页面成了搜索引擎急需解决的问题,因为AJAX颠覆了传统的纯HTTP请求/响应协议机制,如果搜索引擎依旧采用“爬”的机制,是无法抓取到AJAX页面的有效数据的。AJAX采用了JavaScript驱动的异步请求/响应机制.以往的爬虫们缺乏JavaScript语义上的理解.基本上无法模拟触发JavaScript的异步调用并解析返回的异步回渊逻辑和内容另外.在AJAX的应用中,JavaScript会对D0M结构进行大量变动,甚至页面所有内容都通过JavaScript直接从服务器端读取并动态绘制出来。这对习惯了D0M结构相对不变的静态页面简直是无法理解的由此可以看出.以往的爬虫是基于协议驱动的,而对于AJAX这样的技术,所需要的爬虫引擎必须是基于事件驱动的。要实现事件驱动,首先需要解决JavaScript的交互分析和解释的问题。总结近几年,国内关于网络搜索引擎的研究从无到有,直到渐成热点,研究现象的专题聚集特征较为明显。综合性研究论文的数量远远超过该研究领域的细分化专门研究领域的论文数。国外搜索引擎方面研究较热,水平也较国内高。伴随这lucene等一些开源项目又掀起了对搜索引擎研究的一个热潮。在搜索引擎中抓取是消耗较大,又非常重要的部分。那么爬虫的效率,特性和抓取的质量就显得有为重要。那么爬虫技术和人工智能及分布式技术相结合就很自然成为了研究的热点。