《尚学堂科技张志宇Heritrixppt课件》由会员分享,可在线阅读,更多相关《尚学堂科技张志宇Heritrixppt课件(15页珍藏版)》请在金锄头文库上搜索。
1、尚学堂手把手教程V3.0授课:张志宇授课:张志宇版权所有:尚学堂科技http:/Heritrix手把手教程V3.0版权所有:尚学堂科技http:/尚学堂Heritrix介绍在一个搜索引擎的开发过程中,使用一个合适的爬虫来获得所需要的网页信息是第一步,这一步是整个系统成功的基础。Heritrix是一个纯由Java开发的、开源开源的Web网络爬虫,用户可以使用它从网络上抓取想要的资源。它来自于www.archive.org。Heritrix最出色之处在于它的可扩展性可扩展性,开发者可以扩展它的各个组件,来实现自己的抓取逻辑。手把手教程V3.0版权所有:尚学堂科技http:/尚学堂Java开源Web
2、爬虫1HeritrixHeritrix是一个开源,可扩展的web爬虫项目。Heritrix设计成严格按照robots.txt文件的排除指示和METArobots标签。WebSPHINXWebSPHINX是一个Java类包和Web爬虫的交互式开发环境。Web爬虫(也叫作机器人或蜘蛛)是可以自动浏览与处理Web页面的程序。WebSPHINX由两部分组成:爬虫工作平台和WebSPHINX类包。WebLechWebLech是一个功能强大的Web站点下载与镜像工具。它支持按功能需求来下载web站点并能够尽可能模仿标准Web浏览器的行为。WebLech有一个功能控制台并采用多线程操作。AraleArale
3、主要为个人使用而设计,而没有像其它爬虫一样是关注于页面索引。Arale能够下载整个web站点或来自web站点的某些资源。Arale还能够把动态页面映射成静态页面。J-SpiderJ-Spider:是一个完全可配置和定制的WebSpider引擎.你可以利用它来检查网站的错误(内在的服务器错误等),网站内外部链接检查,分析网站的结构(可创建一个网站地图),下载整个Web站点,你还可以写一个JSpider插件来扩展你所需要的功能。spindlespindle是一个构建在Lucene工具包之上的Web索引/搜索工具.它包括一个用于创建索引的HTTPspider和一个用于搜索这些索引的搜索类。spind
4、le项目提供了一组JSP标签库使得那些基于JSP的站点不需要开发任何Java类就能够增加搜索功能。手把手教程V3.0版权所有:尚学堂科技http:/尚学堂Java开源Web爬虫2ArachnidArachnid:是一个基于Java的webspider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Webspiders并能够在Web站上的每个页面被解析之后增加几行代码调用。Arachnid的下载包中包含两个spider应用程序例子用于演示如何使用该框架LARMLARM能够为JakartaLucene搜索引擎框架的用户提供一个
5、纯Java的搜索解决方案。它包含能够为文件,数据库表格建立索引的方法和为Web站点建索引的爬虫。JoBoJoBo是一个用于下载整个Web站点的简单工具。它本质是一个WebSpider。与其它下载工具相比较它的主要优势是能够自动填充form(如:自动登录)和使用cookies来处理session。JoBo还有灵活的下载规则(如:通过网页的URL,大小,MIME类型等)来限制下载。snoics-reptilesnoics-reptile是用纯Java开发的,用来进行网站镜像抓取的工具,可以使用配制文件中提供的URL入口,把这个网站所有的能用浏览器通过GET的方式获取到的资源全部抓取到本地,包括网页
6、和各种类型的文件,如:图片、flash、mp3、zip、rar、exe等文件。可以将整个网站完整地下传至硬盘内,并能保持原有的网站结构精确不变。只需要把抓取下来的网站放到web服务器(如:Apache)中,就可以实现完整的网站镜像。Web-HarvestWeb-Harvest是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些页面中提取有用的数据。Web-Harvest主要是运用了像XSLT,XQuery,正则表达式等这些技术来实现对text/xml的操作。手把手教程V3.0版权所有:尚学堂科技http:/尚学堂Heritrix&Nutch二者均为Java开源框架,Heri
7、trix是SourceForge上的开源产品,Nutch为Apache的一个子项目,它们都称作网络爬虫/蜘蛛(WebCrawler),它们实现的原理基本一致:深度遍历网站的资源,将这些资源抓取到本地,使用的方法都是分析网站每一个有效的URI,并提交Http请求,从而获得相应结果,生成本地文件及相应的日志信息等。Heritrix是个archivalcrawler-用来获取完整的、精确的、站点内容的深度复制。包括获取图像以及其他非文本内容。抓取并存储抓取并存储相关的内容。对内容来者不拒,不对页面进行内容上的修改。重新爬行对相同的URL不针对先前的进行替换。爬虫通过Web用户界面启动、监控、调整,允
8、许弹性的定义要获取的URL。二者的差异:Nutch只获取并保存可索引的内容。Heritrix则是照单全收。力求保存页面原貌Nutch可以修剪内容,或者对内容格式进行转换。Nutch保存内容为数据库优化格式便于以后索引;刷新替换旧的内容。而Heritrix是添加(追加)新的内容。Nutch从命令行运行、控制。Heritrix有Web控制管理界面。Nutch的定制能力不够强,不过现在已经有了一定改进。Heritrix 可控制的参数更多可控制的参数更多。手把手教程V3.0版权所有:尚学堂科技http:/尚学堂Heritrix工作原理工作原理Heritrix是一个爬虫框架,可加如入一些可互换的组件。它
9、的执行是递归递归进行的,主要有以下几步:在预定的URI中选择一个。获取URI分析,归档结果选择已经发现的感兴趣的URI。加入预定队列。标记已经处理过的URI手把手教程V3.0版权所有:尚学堂科技http:/尚学堂处理器链预取链主要是做一些准备工作,例如,对处理进行延迟和重新处理,否决随後的操作。提取链主要是获得资源,进行DNS转换,填写请求和响应表单抽取链当提取完成时,抽取感兴趣的HTML,JavaScript,通常那里有新的也适合的URI,此时URI仅仅被发现,不会被评估写链存储爬行结果,返回内容和抽取特性,过滤完存储。提交链做最後的维护,例如,测试那些不在范围内的,提交给边界部件手把手教程
10、V3.0版权所有:尚学堂科技http:/尚学堂安装Heritrix所用到的工具类库都存于lib下heritrix-1.12.1.jar是Heritrix的Jar包。在Heritrix目录下有一个conf目录,其中包含了一个很重要的文件:heritrix.properties。在heritrix.properties中配置了大量与Heritrix运行息息相关的参数,这些参数主要是配置了Heritrix运行时的一些默认工具类、WebUI的启动参数,以及Heritrix的日志格式等。当第一次运行Heritrix时,只需要修改该文件,为其加入WebUI的登录名和密码,如图10-2所示。手把手教程V3.
11、0版权所有:尚学堂科技http:/尚学堂启动方式Heritrix有多种方式启动,例如,可以使用CrawlController,以后台方式加载一个抓取任务,即为编程式启动编程式启动。不过最常见的还是以WebUI的方式启动它。手把手教程V3.0版权所有:尚学堂科技http:/尚学堂4种创建任务的方式Basedonexistingjob:以一个已经有的抓取任务为模板,创建所有抓取属性和抓取起始URL的列表。Basedonarecovery:在以前的某个任务中,可能设置过一些状态点,新的任务将从这个设置的状态点开始。Basedonaprofile:专门为不同的任务设置了一些模板,新建的任务将按照模板来
12、生成。Withdefaults:这个最简单,表示按默认的配置来生成一个任务。手把手教程V3.0版权所有:尚学堂科技http:/尚学堂order.xml在Heritrix中,一个任务对应一个描述文件。这个描述文件的默认的名称为order.xml。每次创建一个新任务时,都相当于生成了一个order.xml的文件。文件中详细记录了Heritrix在运行时需要的所有信息。例如,它包括该用户所选择的Processor类、Frontier类、Fetcher类、抓取时线程的最大数量、连接超时的最大等待时间等信息。上面所说的4种创建抓取任务的方式,其实都是在生成一个order.xml文件。关于order.xm
13、l的细节,不必深究。因为它里面所有的内容,都会在WebUI上看到。手把手教程V3.0版权所有:尚学堂科技http:/尚学堂ModulesCrawlScope用于配置当前应该在什么范围内抓取网页链接。比如,如果选择BroadScope,则表示当前抓取的范围不受限制,但如果选择了HostScope,则表示抓取的范围在当前的Host内Frontier则是一个URL的处理器,它将决定下一个被处理的URL是什么。同时,它还会将经由处理器链所解析出来的URL加入到等待处理的队列中去。PreProcessor:这个队列中,所有的处理器都是用来对抓取时的一些先决条件做判断的。比如判断robot.txt的信息等
14、,它是整个处理器链的入口。Fetcher:从名称上看,它用于解析网络传输协议,比如解析DNS、HTTP或FTP等。Extractor:它的名字就很好的揭示了它的作用。它主要用是于解析当前获取到的服务器返回内容,这些内容通常是以字符串形式缓存的。在这个队列中,包括了一系列的工具,如解析HTML、CSS等。在解析完毕,取出页面中的URL后,将它们放入队列中,等待下次继续抓取。Writer:主要是用于将所抓取到的信息写入磁盘。通常写入磁盘时有两种形式,一种是采用压缩的方式写入,在这里被称为Arc方式,另一种则采用镜象方式写入。当然处理起来,镜象方式要更为容易一些,PostProcessor:在整个抓
15、取解析过程结束后,进行一些扫尾的工作,比如将前面Extractor解析出来的URL有条件的加入到待处理队列中去。手把手教程V3.0版权所有:尚学堂科技http:/尚学堂settingsmax-toe-threads该参数的含义很容易了解,它表示Heritrix在运行该抓取任务时,为任务分配多少个线程进行同步抓取。而事实上在机器配置和网络均很好的情况下,设置50个线程数就已经足够使用了。HTTP-Header在HTTP-Header这个属性域下面,包括两个属性值“user-agent”和“from”。“VERSION”字符串需要被替换成Heritrix的版本信息。“PROJECT_URL_HER
16、E”可以被替换成任何一个完整的URL地址。“from”属性中不需要设置真实的E-mail地址,只需是格式正确的邮件地址就可以了。手把手教程V3.0版权所有:尚学堂科技http:/尚学堂-Xmx512m使用Heritrix时,考虑到内存的影响,可为其分配512M的最大HeapSize,可以增大Heritrix的最大可用内存,-Xmx512m-XmssetinitialJavaheapsize-XmxsetmaximumJavaheapsize-Xsssetjavathreadstacksize手把手教程V3.0版权所有:尚学堂科技http:/尚学堂课堂练习:任务的设置方法Heritrix简单任务的设置方法简单任务的设置方法Conf/heritrix.propertiesjmxremote.passwordprofiles启动HeritrixwebUI抓取参数设置运行抓取任务