网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。基本步骤:
1) 人工给定一个URL作为入口,从这里开始爬取。
2) 用运行队列和完成队列来保存不同状态的链接。
3) 线程从运行队列读取队首URL,如果存在,则继续执行,反之则停止爬取。
4) 每处理完一个URL,将其放入完成队列,防止重复访问。
5) 每次抓取网页之后分析其中的URL(URL是字符串形式,功能类似指针),将经过过滤的合法链接写入运行队列,等待提取。
6) 重复步骤 3)、4)、5)
1.对抓取目标的描述或定义
2.对网页或数据的分析与过滤
3.对URL的搜索策略
广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。该算法的设计和实现相对简单。在目前为覆盖尽可能多的网页,一般使用广度优先搜索方法。也有很多研究将广度优先搜索策略应用于聚焦爬虫中。其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。另外一种方法是将广度优先搜索与网页过滤技术结合使用,先用广度优先策略抓取网页,再将其中无关的网页过滤掉。这些方法的缺点在于,随着抓取网页的增多,大量的无关网页将被下载并过滤,算法的效率将变低。
即从起始网页开始,选择一个URL,进入,分析这个网页中的URL,选择一个再进入。如此一个链接一个链接地深入追踪下去,处理完一条路线之后再处理下一条路线。该算法在设置抓取深度时很容易导致爬虫的陷入(trapped)问题,同时每深入一层,网页价值和PageRank都会相应地有所下降。这暗示了重要网页通常距离种子较近,而过度深入抓取到的网页却价值很低,所以目前常见的是广度优先和最佳优先方法,很少使用深度优先策略。
随着如今网页内容的多样化,该方法已不再单独使用。Heritrix
Heritrix是一个爬虫框架,可以加入一些可互换的组件。Heritrix是用来获取完整精确的网站内容的爬虫,除文本内容之外,它还获取其他非文本内容(如图片等)并对其进行处理,且不对网页内容进行修改。当重复爬行相同URL时,不会对先前网页进行替换。
Nutch
Nutch深度遍历网站资源,将这些资源抓取到本地,使用的方法都是分析网站每一个有效的URL并向服务器端提交请求来获得相应结果,生成本地文件及相应的日志信息等。
Larbin
Larbin不同于以上两种网络爬虫,它只抓取网页,而不提供包括分析网页、将结果存储到数据库以及建立索引等服务。
Larbin的目的是对页面上的URL进行扩展性的抓取,为搜索引擎提供广泛的数据来源。虽然工作能力较为单一,但Larbin胜在其高度可配置性和良好的工作效率(一个简单的larbin的爬虫可以每天获取500万的网页),这也是Larbin最初的设计理念。
Lucene
Lucene 是一个基于Java的全文信息检索工具包,它本身不是一个完整的全文索引应用程序,而是为各种应用程序提供索引和搜索功能。只要能把要索引的数据转化的文本格式,Lucene 就能对该文档进行索引和搜索。
Lucene采用的是一种称为反向索引(inverted index)的方法。因此,在用户输入查询条件的时候,Lucebne能非常快地得到搜索结果。
本文地址:http://lianchengexpo.xrbh.cn/quote/12376.html 迅博思语资讯 http://lianchengexpo.xrbh.cn/ , 查看更多