网络爬虫调研报告_第1页
网络爬虫调研报告_第2页
网络爬虫调研报告_第3页
网络爬虫调研报告_第4页
网络爬虫调研报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z.网络爬虫调研报告基本原理Spider概述Spider即网络爬虫,其定义有广义和狭义之分。狭义上指遵循标准的http协议利用超和Web文档检索的方法遍历万维网信息空间的软件程序;而广义的定义则是所有能遵循http协议检索Web文档的软件都称之为网络爬虫。Spider是一个功能很强的自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.它通过请求站点上的HTML文档访问*一站点。它遍历Web空间,不断从一个站点移动到另一个站点,自动建立索引,并加入到网页数据库中。网络爬虫进入*个超级文本时,它利用HTML语言的标记结构来搜索信息及获取指向其他超级文本的URL地址,可以完全不依赖用户干预实现网络上的自动爬行和搜索。Spider的队列(1)等待队列:新发现的URL被加入到这个队列,等待被Spider程序处理;(2)处理队列:要被处理的URL被传送到这个队列。为了避免同一个URL被多次处理,当一个URL被处理过后,它将被转移到完成队列或者错误队列(如果发生错误)。(3)错误队列:如果在下载网页是发生错误,该URL将被加入到错误队列。(4)完成队列:如果在处理网页没有发生错误,该URL将被加入到完成队列。网络爬虫搜索策略在抓取网页的时候,目前网络爬虫一般有两种策略:无主题搜索与基于*特定主体的专业智能搜索。其中前者主要包括:广度优先和深度优先。广度优先是指网络爬虫会先抓取起始网页中的所有网页,然后再选择其中的一个网页,继续抓取在此网页中的所有网页。这是最常用的方式,因为这个方法可以让网络爬虫并行处理,提高其抓取速度。深度优先是指网络爬虫会从起始页开始,一个一个跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪。这个方法有个优点是网络爬虫在设计的时候比较容易。大多数网页爬行器采用宽度优先搜索策略或者是对这种策略的*些改进。在专业搜索引擎中,网络爬虫的任务是获取Web页面和决定的访问顺序,它通常从一个"种子集”(如用户查询、种子或种子页面)发,以迭代的方式访问页面和提取。搜索过程中,未访问的被暂存在一个称为"搜索前沿”(SpiderFrontier)的队列中,网络爬虫根据搜索前沿中的"重要程度”决定下一个要访问的。如何评价和预测的"重要程度”(或称价值)是决定网络爬虫搜索策略的关键。众多的网络爬虫设计各不相同,但归根结底是采用不同的价值评价标准。常用开源网络爬虫介绍及其比较Nutch开发语言:Java简介:Apache的子项目之一,属于Lucene项目下的子项目。Nutch是一个基于Lucene,类似Google的完整网络搜索引擎解决方案,基于Hadoop的分布式处理模型保证了系统的性能,类似Eclipse的插件机制保证了系统的可客户化,而且很容易集成到自己的应用之中。Larbin开发语言:C++简介larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人SébastienAilleret独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎提供广泛的数据来源。Larbin只是一个爬虫,也就是说larbin只抓取网页,至于如何parse的事情则由用户自己完成。另外,如何存储到数据库以及建立索引的事情larbin也不提供。latbin最初的设计也是依据设计简单但是高度可配置性的原则,因此我们可以看到,一个简单的larbin的爬虫可以每天获取500万的网页,非常高效。Heritri*开发语言:Java简介与Nutch比较

Heritri*和Nutch。二者均为Java开源框架,Heritri*是SourceForge上的开源产品,Nutch为Apache的一个子项目,它们都称作网络爬虫/蜘蛛(WebCrawler),它们实现的原理基本一致:深度遍历的资源,将这些资源抓取到本地,使用的方法都是分析每一个有效的URI,并提交Http请求,从而获得相应结果,生成本地文件及相应的日志信息等。

Heritri*是个"archivalcrawler"--用来获取完整的、精确的、站点内容的深度复制。包括获取图像以及其他非文本内容。抓取并存储相关的内容。对内容来者不拒,不对页面进行内容上的修改。重新爬行对相同的URL不针对先前的进行替换。爬虫通过Web用户界面启动、监控、调整,允许弹性的定义要获取的URL。二者的差异:Nutch只获取并保存可索引的内容。Heritri*则是照单全收。力求保存页面原貌Nutch可以修剪内容,或者对内容格式进行转换。Nutch保存内容为数据库优化格式便于以后索引;刷新替换旧的内容。而Heritri*是添加(追加)新的内容。Nutch从命令行运行、控制。Heritri*有Web控制管理界面。Nutch的定制能力不够强,不过现在已经有了一定改进。Heritri*可控制的参数更多。Heritri*提供的功能没有nutch多,有点整站下载的味道。既没有索引又没有解析,甚至对于重复爬取URL都处理不是很好。Heritri*的功能强大但是配置起来却有点麻烦。三者的比较一、从功能方面来说,Heritri*与Larbin的功能类似。都是一个纯粹的网络爬虫,提供的镜像下载。而Nutch是一个网络搜索引擎框架,爬取网页只是其功能的一部分。二、从分布式处理来说,Nutch支持分布式处理,而另外两个好像尚且还没有支持。三、从爬取的网页存储方式来说,Heritri*和Larbin都是将爬取下来的内容保存为原始类型的内容。而Nutch是将内容保存到其特定格式的segment中去。四,对于爬取下来的内容的处理来说,Heritri*和Larbin都是将爬取下来的内容不经处理直接保存为原始内容。而Nutch对文本进行了包括分析、正文提取、建立索引(Lucene索引)等处理。五,从爬取的效率来说,Larbin效率较高,因为其是使用c++实现的并且功能单一。表3种爬虫的比较crawler开发语言功能单一支持分布式爬取效率镜像保存NutchJava×√低×LarbinC++√×高√Heritri*Java√×中√其他网络爬虫介绍:Heritri*Heritri*是一个开源,可扩展的web爬虫项目。Heritri*设计成严格按照robots.t*t文件的排除指示和METArobots标签。WebSPHIN*

WebSPHIN*是一个Java类包和Web爬虫的交互式开发环境。Web爬虫(也叫作机器人或蜘蛛)是可以自动浏览与处理Web页面的程序。WebSPHIN*由两部分组成:爬虫工作平台和WebSPHIN*类包。./~rcm/websphin*/WebLech

WebLech是一个功能强大的Web站点下载与镜像工具。它支持按功能需求来下载web站点并能够尽可能模仿标准Web浏览器的行为。WebLech有一个功能控制台并采用多线程操作。Arale

Arale主要为个人使用而设计,而没有像其它爬虫一样是关注于页面索引。Arale能够下载整个web站点或来自web站点的*些资源。Arale还能够把动态页面映射成静态页面。J-Spider

J-Spider:是一个完全可配置和定制的WebSpider引擎.你可以利用它来检查的错误(内在的服务器错误等),内外部检查,分析的结构(可创建一个地图),下载整个Web站点,你还可以写一个JSpider插件来扩展你所需要的功能。spindle

spindle是一个构建在Lucene工具包之上的Web索引/搜索工具.它包括一个用于创建索引的HTTPspider和一个用于搜索这些索引的搜索类。spindle项目提供了一组JSP标签库使得那些基于JSP的站点不需要开发任何Java类就能够增加搜索功能。.bitmechanic./projects/spindle/Arachnid

Arachnid:是一个基于Java的webspider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Webspiders并能够在Web站上的每个页面被解析之后增加几行代码调用。Arachnid的下载包中包含两个spider应用程序例子用于演示如何使用该框架。LARM

LARM能够为JakartaLucene搜索引擎框架的用户提供一个纯Java的搜索解决方案。它包含能够为文件,数据库表格建立索引的方法和为Web站点建索引的爬虫。JoBo

JoBo是一个用于下载整个Web站点的简单工具。它本质是一个WebSpider。与其它下载工具相比较它的主要优势是能够自动填充form(如:自动登录)和使用cookies来处理session。JoBo还有灵活的下载规则(如:通过网页的URL,大小,MIME类型等)来限制下载。./software/jobo/inde*.htmlsnoics-reptile

snoics-reptile是用纯Java开发的,用来进行镜像抓取的工具,可以使用配制文件中提供的URL入口,把这个所有的能用浏览器通过GET的方式获取到的资源全部抓取到本地,包括网页和各种类型的文件,如:图片、flash、mp3、zip、rar、e*e等文件。可以将整个完整地下传至硬盘内,并能保持原有的结构精确不变。只需要把抓取下来的放到web服务器(如:Apache)中,就可以实现完整的镜像。./snoicsWeb-Harvest

Web-Harvest是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些页面中提取有用的数据。Web-Harvest主要是运用了像*SLT,*Query,正则表达式等这些技术来实现对te*t/*ml的操作。spiderpy

spiderpy是一个基于Python编码的一个开源web爬虫工具,允许用户收集文件和搜索,并有一个可配置的界面。TheSpiderWebNetwork*oopsModTeam

piderWebNetwork*oopsMod是一个*oops下的模块,完全由PHP语言实现。.tswn./larbin

larbin是个基于C++的web爬虫工具,拥有易于操作的界面,不过只能跑在LINU*下,在一台普通PC下larbin每天可以爬5百万个页面(当然啦,需要拥有良好的网络)

爬虫存在的问题1.robots.t*trobots.t*t是一个纯文本文件,在这个文件中管理者可以声明该中不想被robots访问的部分,或者指定搜索引擎只收录指定的内容。当一个搜索机器人(有的叫搜索蜘蛛)访问一个站点时,它会首先检查该站点根目录下是否存在robots.t*t,如果存在,搜索机器人就会按照该文件中的内容来确定访问的*围;如果该文件不存在,则搜索机器人就沿着抓取。另外,robots.t*t必须放置在一个站点的根目录下,而且文件名必须全部小写。2.有些类型的网页难以爬取。例如,使用javascript调用的页面、需要注册才能访问的页面等。网络爬虫的相关研究工作有些类型的网页难以爬取。例如,使用javascript调用的页面、需要注册才能访问的页面等,对于这些网络的爬取被归结为深层网络的挖掘。这些网页可归结为如下几类:(1)通过填写表单形成对后台再现数据库查询得到的动态页面。(2)由于缺乏被指向的超而没有被索引到的页面。(3)需要注册或其他限制访问的页面。(4)可访问的非网页文件。在曾伟辉等人的文章中,对这类问题进行了综述。在王映等人的文章中,提出了使用一个嵌入式的JavaScript引擎来进行动态网页采集的方法。1.有些非静态的Web2.0的内容动态生成,数据量巨大,难以抓取,例如论坛等。在2008年SIGIR中,YidaWang等提出了一种爬取论坛的爬取方法。2.有些会限制网络爬虫的爬取,AnaliaG.Lourenco,

OrlandoO.Belo在2006年提出来使用查询日志的方法限制网络爬虫的活动以减轻服务器压力。3.网络上的网页数量太大,在爬取时需要考虑爬取的时间及效率等问题,UCLA的JunghooCho等提出了使用并行的crawler的方法。4.主题网络爬虫研究未来研究方向分布式网络爬虫并行网络爬虫特定领域如论坛,博客等的爬取关于Aja*技术的深层网络爬虫研究。多媒体网络爬虫研究对等网络(P2P,PeertoPeer)网络爬虫参考文献:[1]谢国强等,《基于Web的网络爬虫技术研究》[2]YidaWangetc.E*ploringTraversalStrategyforWebForumCrawling,sigir’08[3]JunghooCho(UCLA),HectorGarcia-Molina(Standford),ParallelCrawlers,2002[4]AnaliaLourencoetc,CatchingWebCrawlersintheAct,ICWE’06[5]曾伟辉等,《深层网络爬虫研究综述》,计算机系统应用2008年第5期[6]王映、于满泉等,《JavaScript引擎在动态网页采集技术中的应用》,中科院计算所、微软亚洲研究院网络爬虫调研报告基本原理Spider概述Spider即网络爬虫,其定义有广义和狭义之分。狭义上指遵循标准的http协议利用超和Web文档检索的方法遍历万维网信息空间的软件程序;而广义的定义则是所有能遵循http协议检索Web文档的软件都称之为网络爬虫。Spider是一个功能很强的自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.它通过请求站点上的HTML文档访问*一站点。它遍历Web空间,不断从一个站点移动到另一个站点,自动建立索引,并加入到网页数据库中。网络爬虫进入*个超级文本时,它利用HTML语言的标记结构来搜索信息及获取指向其他超级文本的URL地址,可以完全不依赖用户干预实现网络上的自动爬行和搜索。Spider的队列(1)等待队列:新发现的URL被加入到这个队列,等待被Spider程序处理;(2)处理队列:要被处理的URL被传送到这个队列。为了避免同一个URL被多次处理,当一个URL被处理过后,它将被转移到完成队列或者错误队列(如果发生错误)。(3)错误队列:如果在下载网页是发生错误,该URL将被加入到错误队列。(4)完成队列:如果在处理网页没有发生错误,该URL将被加入到完成队列。网络爬虫搜索策略在抓取网页的时候,目前网络爬虫一般有两种策略:无主题搜索与基于*特定主体的专业智能搜索。其中前者主要包括:广度优先和深度优先。广度优先是指网络爬虫会先抓取起始网页中的所有网页,然后再选择其中的一个网页,继续抓取在此网页中的所有网页。这是最常用的方式,因为这个方法可以让网络爬虫并行处理,提高其抓取速度。深度优先是指网络爬虫会从起始页开始,一个一个跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪。这个方法有个优点是网络爬虫在设计的时候比较容易。大多数网页爬行器采用宽度优先搜索策略或者是对这种策略的*些改进。在专业搜索引擎中,网络爬虫的任务是获取Web页面和决定的访问顺序,它通常从一个"种子集”(如用户查询、种子或种子页面)发,以迭代的方式访问页面和提取。搜索过程中,未访问的被暂存在一个称为"搜索前沿”(SpiderFrontier)的队列中,网络爬虫根据搜索前沿中的"重要程度”决定下一个要访问的。如何评价和预测的"重要程度”(或称价值)是决定网络爬虫搜索策略的关键。众多的网络爬虫设计各不相同,但归根结底是采用不同的价值评价标准。常用开源网络爬虫介绍及其比较Nutch开发语言:Java简介:Apache的子项目之一,属于Lucene项目下的子项目。Nutch是一个基于Lucene,类似Google的完整网络搜索引擎解决方案,基于Hadoop的分布式处理模型保证了系统的性能,类似Eclipse的插件机制保证了系统的可客户化,而且很容易集成到自己的应用之中。Larbin开发语言:C++简介larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人SébastienAilleret独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎提供广泛的数据来源。Larbin只是一个爬虫,也就是说larbin只抓取网页,至于如何parse的事情则由用户自己完成。另外,如何存储到数据库以及建立索引的事情larbin也不提供。latbin最初的设计也是依据设计简单但是高度可配置性的原则,因此我们可以看到,一个简单的larbin的爬虫可以每天获取500万的网页,非常高效。Heritri*开发语言:Java简介与Nutch比较Heritri*和Nutch。二者均为Java开源框架,Heritri*是SourceForge上的开源产品,Nutch为Apache的一个子项目,它们都称作网络爬虫/蜘蛛(WebCrawler),它们实现的原理基本一致:深度遍历的资源,将这些资源抓取到本地,使用的方法都是分析每一个有效的URI,并提交Http请求,从而获得相应结果,生成本地文件及相应的日志信息等。

Heritri*是个"archivalcrawler"用来获取完整的、精确的、站点内容的深度复制。包括获取图像以及其他非文本内容。抓取并存储相关的内容。对内容来者不拒,不对页面进行内容上的修改。重新爬行对相同的URL不针对先前的进行替换。爬虫通过Web用户界面启动、监控、调整,允许弹性的定义要获取的URL。二者的差异:Nutch只获取并保存可索引的内容。Heritri*则是照单全收。力求保存页面原貌Nutch可以修剪内容,或者对内容格式进行转换。Nutch保存内容为数据库优化格式便于以后索引;刷新替换旧的内容。而Heritri*是添加(追加)新的内容。Nutch从命令行运行、控制。Heritri*有Web控制管理界面。Nutch的定制能力不够强,不过现在已经有了一定改进。Heritri*可控制的参数更多。Heritri*提供的功能没有nutch多,有点整站下载的味道。既没有索引又没有解析,甚至对于重复爬取URL都处理不是很好。Heritri*的功能强大但是配置起来却有点麻烦。三者的比较一、从功能方面来说,Heritri*与Larbin的功能类似。都是一个纯粹的网络爬虫,提供的镜像下载。而Nutch是一个网络搜索引擎框架,爬取网页只是其功能的一部分。二、从分布式处理来说,Nutch支持分布式处理,而另外两个好像尚且还没有支持。三、从爬取的网页存储方式来说,Heritri*和Larbin都是将爬取下来的内容保存为原始类型的内容。而Nutch是将内容保存到其特定格式的segment中去。四,对于爬取下来的内容的处理来说,Heritri*和Larbin都是将爬取下来的内容不经处理直接保存为原始内容。而Nutch对文本进行了包括分析、正文提取、建立索引(Lucene索引)等处理。五,从爬取的效率来说,Larbin效率较高,因为其是使用c++实现的并且功能单一。表3种爬虫的比较crawler开发语言功能单一支持分布式爬取效率镜像保存NutchJava×√低×LarbinC++√×高√Heritri*Java√×中√其他网络爬虫介绍:Heritri*

Heritri*是一个开源,可扩展的web爬虫项目。Heritri*设计成严格按照robots.t*t文件的排除指示和METArobots标签。WebSPHIN*

WebSPHIN*是一个Java类包和Web爬虫的交互式开发环境。Web爬虫(也叫作机器人或蜘蛛)是可以自动浏览与处理Web页面的程序。WebSPHIN*由两部分组成:爬虫工作平台和WebSPHIN*类包。./~rcm/websphin*/WebLech

WebLech是一个功能强大的Web站点下载与镜像工具。它支持按功能需求来下载web站点并能够尽可能模仿标准Web浏览器的行为。WebLech有一个功能控制台并采用多线程操作。Arale

Arale主要为个人使用而设计,而没有像其它爬虫一样是关注于页面索引。Arale能够下载整个web站点或来自web站点的*些资源。Arale还能够把动态页面映射成静态页面。J-Spider

J-Spider:是一个完全可配置和定制的WebSpider引擎.你可以利用它来检查的错误(内在的服务器错误等),内外部检查,分析的结构(可创建一个地图),下载整个Web站点,你还可以写一个JSpider插件来扩展你所需要的功能。spindle

spindle是一个构建在Lucene工具包之上的Web索引/搜索工具.它包括一个用于创建索引的HTTPspider和一个用于搜索这些索引的搜索类。spindle项目提供了一组JSP标签库使得那些基于JSP的站点不需要开发任何Java类就能够增加搜索功能。.bitmechanic./projects/spindle/Arachnid

Arachnid:是一个基于Java的webspider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Webspiders并能够在Web站上的每个页面被解析之后增加几行代码调用。Arachnid的下载包中包含两个spider应用程序例子用于演示如何使用该框架。LARM

LARM能够为JakartaLucene搜索引擎框架的用户提供一个纯Java的搜索解决方案。它包含能够为文件,数据库表格建立索引的方法和为Web站点建索引的爬虫。JoBo

JoBo是一个用于下载整个Web站点的简单工具。它本质是一个WebSpider。与其它下载工具相比较它的主要优势是能够自动填充form(如:自动登录)和使用cookies来处理session。JoBo还有灵活的下载规则(如:通过网页的URL,大小,MIME类型等)来限制下载。./software/jobo/inde*.htmlsnoics-reptile

snoics-reptile是用纯Java开发的,用来进行镜像抓取的工具,可以使用配制文件中提供的URL入口,把这个所有的能用浏览器通过GET的方式获取到的资源全部抓取到本地,包括网页和各种类型的文件,如:图片、flash、mp3、zip、rar、e*e等文件。可以将整个完整地下传至硬盘内,并能保持原有的结构精确不变。只需要把抓取下来的放到web服务器(如:Apache)中,就可以实现完整的镜像。./snoicsWeb-Harvest

Web-Harvest是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些页面中提取有用的数据。Web-Harvest主要是运用了像*SLT,*Query,正则表达式等这些技术来实现对te*t/*ml的操作。spiderpy

spiderpy是一个基于Python编码的一个开源web爬虫工具,允许用户收集文件和搜索,并有一个可配置的界面。TheSpiderWebNetwork*oopsModTeam

piderWebNetwork*oopsMod是一个*oops下的模块,完全由PHP语言实现。.tswn./Fetchgals

Fetchgals是一个基于perl多线程的Web爬虫,通过Tags来搜索**图片。/projects/fetchgalslarbin

larbin是个基于C++的web爬虫工具,拥有易于操作的界面,不过只能跑在LINU*下,在一台普通PC下larbin每天可以爬5百万个页面(当然啦,需要拥有良好的网络)

爬虫存在的问题1.robots.t*t

robots.t*t是一个纯文本文件,在这个文件中管理者可以声明该中不想被robots访问的部分,或者指定搜索引擎

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论