1 / 15

Heritrix

Heritrix. Heritrix 介绍. 在一个搜索引擎的开发过程中,使用一个合适的爬虫来获得所需要的网页信息是第一步,这一步是整个系统成功的基础。 Heritrix 是一个纯由 Java 开发的、 开源 的 Web 网络爬虫,用户可以使用它从网络上抓取想要的资源。 它来自于 www.archive.org 。 Heritrix 最出色之处在于它的 可扩展性 ,开发者可以扩展它的各个组件,来实现自己的抓取逻辑。 . Java 开源 Web 爬虫 1. Heritrix

lynna
Download Presentation

Heritrix

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Heritrix

  2. Heritrix介绍 • 在一个搜索引擎的开发过程中,使用一个合适的爬虫来获得所需要的网页信息是第一步,这一步是整个系统成功的基础。 • Heritrix是一个纯由Java开发的、开源的Web网络爬虫,用户可以使用它从网络上抓取想要的资源。 • 它来自于www.archive.org。 • Heritrix最出色之处在于它的可扩展性,开发者可以扩展它的各个组件,来实现自己的抓取逻辑。

  3. Java开源Web爬虫 1 • Heritrix • Heritrix是一个开源,可扩展的web爬虫项目。Heritrix设计成严格按照robots.txt文件的排除指示和META robots标签。 • WebSPHINX • WebSPHINX是一个Java类包和Web爬虫的交互式开发环境。Web爬虫(也叫作机器人或蜘蛛)是可以自动浏览与处理Web页面的程序。WebSPHINX由两部分组成:爬虫工作平台和WebSPHINX类包。 • WebLech • WebLech是一个功能强大的Web站点下载与镜像工具。它支持按功能需求来下载web站点并能够尽可能模仿标准Web浏览器的行为。WebLech有一个功能控制台并采用多线程操作。 • Arale • Arale主要为个人使用而设计,而没有像其它爬虫一样是关注于页面索引。Arale能够下载整个web站点或来自web站点的某些资源。Arale还能够把动态页面映射成静态页面。 • J-Spider • J-Spider:是一个完全可配置和定制的Web Spider引擎.你可以利用它来检查网站的错误(内在的服务器错误等),网站内外部链接检查,分析网站的结构(可创建一个网站地图),下载整个Web站点,你还可以写一个JSpider插件来扩展你所需要的功能。 • spindle • spindle 是一个构建在Lucene工具包之上的Web索引/搜索工具.它包括一个用于创建索引的HTTP spider和一个用于搜索这些索引的搜索类。spindle项目提供了一组JSP标签库使得那些基于JSP的站点不需要开发任何Java类就能够增加搜索功能。

  4. Java开源Web爬虫 2 • Arachnid • Arachnid: 是一个基于Java的web spider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Web spiders并能够在Web站上的每个页面被解析之后增加几行代码调用。 Arachnid的下载包中包含两个spider应用程序例子用于演示如何使用该框架 • LARM • LARM能够为Jakarta Lucene搜索引擎框架的用户提供一个纯Java的搜索解决方案。它包含能够为文件,数据库表格建立索引的方法和为Web站点建索引的爬虫。 • JoBo • JoBo 是一个用于下载整个Web站点的简单工具。它本质是一个Web Spider。与其它下载工具相比较它的主要优势是能够自动填充form(如:自动登录)和使用cookies来处理session。JoBo还有灵活的下载规则(如:通过网页的URL,大小,MIME类型等)来限制下载。 • snoics-reptile • snoics -reptile是用纯Java开发的,用来进行网站镜像抓取的工具,可以使用配制文件中提供的URL入口,把这个网站所有的能用浏览器通过GET的方式获取到的资源全部抓取到本地,包括网页和各种类型的文件,如:图片、flash、mp3、zip、rar、exe等文件。可以将整个网站完整地下传至硬盘内,并能保持原有的网站结构精确不变。只需要把抓取下来的网站放到web服务器(如:Apache)中,就可以实现完整的网站镜像。 • Web-Harvest • Web-Harvest是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些页面中提取有用的数据。Web-Harvest主要是运用了像XSLT,XQuery,正则表达式等这些技术来实现对text/xml的操作。

  5. Heritrix & Nutch • 二者均为Java开源框架,Heritrix 是 SourceForge上的开源产品,Nutch为Apache的一个子项目,它们都称作网络爬虫/蜘蛛( Web Crawler),它们实现的原理基本一致:深度遍历网站的资源,将这些资源抓取到本地,使用的方法都是分析网站每一个有效的URI,并提交Http请求,从而获得相应结果,生成本地文件及相应的日志信息等。 • Heritrix 是个 "archival crawler" -- 用来获取完整的、精确的、站点内容的深度复制。包括获取图像以及其他非文本内容。抓取并存储相关的内容。对内容来者不拒,不对页面进行内容上的修改。重新爬行对相同的URL不针对先前的进行替换。爬虫通过Web用户界面启动、监控、调整,允许弹性的定义要获取的URL。 • 二者的差异: • Nutch 只获取并保存可索引的内容。Heritrix则是照单全收。力求保存页面原貌 • Nutch 可以修剪内容,或者对内容格式进行转换。 • Nutch 保存内容为数据库优化格式便于以后索引;刷新替换旧的内容。而Heritrix 是添加(追加)新的内容。 • Nutch 从命令行运行、控制。Heritrix 有 Web 控制管理界面。 • Nutch 的定制能力不够强,不过现在已经有了一定改进。Heritrix 可控制的参数更多。

  6. Heritrix工作原理 • Heritrix是一个爬虫框架,可加如入一些可互换的组件。它的执行是递归进行的,主要有以下几步: • 在预定的URI中选择一个。 • 获取URI • 分析,归档结果 • 选择已经发现的感兴趣的URI。加入预定队列。 • 标记已经处理过的URI

  7. 处理器链 • 预取链 • 主要是做一些准备工作,例如,对处理进行延迟和重新处理,否决随後的操作。 • 提取链 • 主要是获得资源,进行DNS转换,填写请求和响应表单 • 抽取链 • 当提取完成时,抽取感兴趣的HTML,JavaScript,通常那里有新的也适合的URI,此时URI仅仅被发现,不会被评估 • 写链 • 存储爬行结果,返回内容和抽取特性,过滤完存储。 • 提交链 • 做最後的维护,例如,测试那些不在范围内的,提交给边 界部件

  8. 安装 • Heritrix所用到的工具类库都存于lib下 • heritrix-1.12.1.jar是Heritrix的Jar包。 • 在Heritrix目录下有一个conf目录,其中包含了一个很重要的文件:heritrix.properties。 • 在heritrix.properties中配置了大量与Heritrix运行息息相关的参数,这些参数主要是配置了Heritrix运行时的一些默认工 具类、WebUI的启动参数,以及Heritrix的日志格式等。 • 当第一次运行Heritrix时,只需要修改该文件,为其加入WebUI的登录名和密 码,如图10-2所示。

  9. 启动方式 • Heritrix有多种方式启动,例如,可以使用CrawlController,以后台方式加载一个抓取任务,即为编程式启动。 • 不过最常见的还是以WebUI的方式启动它。

  10. 4种创建任务的方式 • Based on existing job:以一个已经有的抓取任务为模板,创建所有抓取属性和抓取起始URL的列表。 • Based on a recovery:在以前的某个任务中,可能设置过一些状态点,新的任务将从这个设置的状态点开始。 • Based on a profile:专门为不同的任务设置了一些模板,新建的任务将按照模板来生成。 • With defaults:这个最简单,表示按默认的配置来生成一个任务。

  11. order.xml • 在Heritrix中,一个任务对应一个描述文件。这个描述文件的默认的名称为order.xml。 • 每次创建一个新任务时,都相当于生成了一个 order.xml的文件。 • 文件中详细记录了Heritrix在运行时需要的所有信息。例如,它包括该用户所选择的Processor类、 Frontier类、Fetcher类、抓取时线程的最大数量、连接超时的最大等待时间等信息。 • 上面所说的4种创建抓取任务的方式,其实都是在生成一个 order.xml文件。 • 关于order.xml的细节,不必深究。因为它里面所有的内容,都会在WebUI上看到。

  12. Modules • CrawlScope用于配置当前应该在什么范围内抓取网页链接。比如,如果选择BroadScope,则表示当前抓取的范围不受限制,但如果选择了HostScope,则表示抓取的范围在当前的Host内 • Frontier则是一个URL的处理器,它将决定下一个被处理的URL是什么。同时,它还会将经由处理器链所解析出来的URL加入到等待处理的队列中去。 • PreProcessor:这个队列中,所有的处理器都是用来对抓取时的一些先决条件做判断的。比如判断robot.txt的信息等,它是整个处理器链的入口。 • Fetcher:从名称上看,它用于解析网络传输协议,比如解析DNS、HTTP或FTP等。 • Extractor:它的名字就很好的揭示了它的作用。它主要用是于解析当前获取到的服务器返回内容,这些内容通常是以字符串形式缓存的。在这个队列中, 包括了一系列的工具,如解析HTML、CSS等。在解析完毕,取出页面中的URL后,将它们放入队列中,等待下次继续抓取。 • Writer:主要是用于将所抓取到的信息写入磁盘。通常写入磁盘时有两种形式,一种是采用压缩的方式写入,在这里被称为Arc方式,另一种则采用镜象方式写入。当然处理起来,镜象方式要更为容易一些, • PostProcessor:在整个抓取解析过程结束后,进行一些扫尾的工作,比如将前面Extractor解析出来的URL有条件的加入到待处理队列中去。

  13. settings • max-toe-threads • 该参数的含义很容易了解,它表示Heritrix在运行该抓取任务时,为任务分配多少个线程进行同步抓取。而事实上在机器配置和网络均很好的情况下,设置50个线程数就已经足够使用了。 • HTTP-Header • 在HTTP-Header这个属性域下面,包括两个属性值“user-agent”和“from”。 • “@VERSION@”字符串需要被替换成Heritrix的版本信息。 • “PROJECT_URL_HERE”可以被替换成任何一个完整的URL地址。 • “from”属性中不需要设置真实的E-mail地址,只需是格式正确的邮件地址就可以了。

  14. -Xmx512m • 使用Heritrix时,考虑到内存的影响,可为其分配512M的最大HeapSize,可以增大Heritrix的最大可用内存, • -Xmx512m • -Xms       set initial Java heap size-Xmx       set maximum Java heap size-Xss        set java thread stack size

  15. 课堂练习:任务的设置方法 • Heritrix简单任务的设置方法 • Conf/heritrix.properties • jmxremote.password • profiles • 启动Heritrix • webUI • 抓取参数设置 • 运行抓取任务

More Related