搜索引擎实例讲解
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
提取链主要是获得资源进行dns转换填写请求和响应表单抽取链当提取完成时抽取感兴趣的htmljavascript通常那里有新的也适合的uri此时uri仅仅被发现不会被评估存储爬行结果返回内容和抽取特性过滤完存储
搜索引擎
Heritrix介绍
• 在一个搜索引擎的开发过程中,使用一个合适 的爬虫来获得所需要的网页信息是第一步,这 一步是整个系统成功的基础。 • Heritrix是一个纯由Java开发的、开源的Web 网络爬虫,用户可以使用它从网络上抓取想要 的资源。 • 它来自于。 • Heritrix最出色之处在于它的可扩展性,开发者 可以扩展它的各个组件,来实现自己的抓取逻 辑。
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有条件的加入到待处理队列中去。
• Arachnid
– Arachnid: 是一个基于Java的web spider框架.它包含一个简单的HTML剖析器能够分析包 含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Web spiders并能 够在Web站上的每个页面被解析之后增加几行代码调用。 Arachnid的下载包中包含两个 spider应用程序例子用于演示如何使用该框架
– Nutch 只获取并保存可索引的内容。Heritrix则是照单全收。力求保存页 面原貌
Heritrix工作原理
• Heritrix是一个爬虫框架,可加如入一些可互换 的组件。它的执行是递归进行的,主要有以下 几步:
– 在预定的URI中选择一个。 – 获取URI – 分析,归档结果 – 选择已经发现的感兴趣的URI。加入预定队列。 – 标记已经处理过的URI
课堂练习:任务的设置方法
• Heritrix简单任务的设置方法
– Conf/heritrix.properties – jmxremote.password – profiles – 启动Heritrix – webUI – 抓取参数设置 – 运行抓取任务
例子: • 利用 Heritrix 构建特定站点爬虫
-Xmx512m
• 使用Heritrix时,考虑到内存的影响,可为其分 配512M的最大HeapSize,可以增大Heritrix的 最大可用内存,
– -Xmx512m
• -Xms -Xmx -Xss
set initial Java heap size set maximum Java heap size set java thread stack size
• LARM
– LARM能够为Jakarta Lucene搜索引擎框架的用户提供一个纯Java的搜索解决方案。它 包含能够为文件,数据库表格建立索引的方法和为Web站点建索引的爬虫。
• JoBo
– JoBo 是一个用于下载整个Web站点的简单工具。它本质是一个Web Spider。与其它下 载工具相比较它的主要优势是能够自动填充form(如:自动登录)和使用cookies来处理 session。JoBo还有灵活的下载规则(如:通过网页的URL,大小,MIME类型等)来限制 下载。
Java开源Web爬虫 1
• Heritrix
– Heritrix是一个开源,可扩展的web爬虫项目。Heritrix设计成严格按照robots.txt 文件的排除指示和META robots标签。
• WebSPHINX
– WebSPHINX是一个Java类包和Web爬虫的交互式开发环境。Web爬虫(也叫作 机器人或蜘蛛)是可以自动浏览与处理Web页面的程序。WebSPHINX由两部分组 成:爬虫工作平台和WebSPHINX类包。
• Lia.meetlucene.Indexer
安装
• Heritrix所用到的工具类库都存于lib下 • heritrix-1.12.1.jar是Heritrix的Jar包。 • 在Heritrix目录下有一个conf目录,其中包含了 一个很重要的文件:heritrix.properties。
– 在heritrix.properties中配置了大量与Heritrix运行息 息相关的参数,这些参数主要是配置了Heritrix运 行时的一些默认工 具类、WebUI的启动参数,以 及Heritrix的日志格式等。 – 当第一次运行Heritrix时,只需要修改该文件,为 其加入WebUI的登录名和密 码,如图10-2所示。
• Web-Harvest
– Web-Harvest是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些 页面中提取有用的数据。Web-Harvest主要是运用了像XSLT,XQuery,正则表达式等这些
Heritrix & Nutch
• 二者均为Java开源框架,Heritrix 是 SourceForge上的开源产品, Nutch为Apache的一个子项目,它们都称作网络爬虫/蜘蛛 ( Web Crawler),它们实现的原理基本一致:深度遍历网站 的资源,将这些资源抓取到本地,使用的方法都是分析网站每 一个有效的URI,并提交Http请求,从而获得相应结果,生成本 地文件及相应的日志信息等。 • Heritrix 是个 "archival crawler" -- 用来获取完整的、精确的、站 点内容的深度复制。包括获取图像以及其他非文本内容。抓取 并存储相关的内容。对内容来者不拒,不对页面进行内容上的 修改。重新爬行对相同的URL不针对先前的进行替换。爬虫通 过Web用户界面启动、监控、调整,允许弹性的定义要获取的 URL。 • 二者的差异:
• snoics-reptile
– snoics -reptile是用纯Java开发的,用来进行网站镜像抓取的工具,可以使用配制文件中 提供的URL入口,把这个网站所有的能用浏览器通过GET的方式获取到的资源全部抓取 到本地,包括网页和各种类型的文件,如:图片、flash、mp3、zip、rar、exe等文件。 可以将整个网站完整地下传至硬盘内,并能保持原有的网站结构精确不变。只需要把抓 取下来的网站放到web服务器(如:Apache)中,就可以实现完整的网站镜像。
启动方式
• Heritrix有多种方式启动,例如,可以使用 CrawlController,以后台方式加载一个抓取任 务,即为编程式启动。 • 不过最常见的还是以WebUI的方式启动它。
4种创建任务的方式
• Based on existing job:以一个已经有的抓取任务为模板,创 建所有抓取属性和抓取起始URL的列表。 • Based on a recovery:在以前的某个任务中,可能设置过一 些状态点,新的任务将从这个设置的状态点开始。 • Based on a profile:专门为不同的任务设置了一些模板,新 建的任务将按照模板来生成。 • With defaults:这个最简单,表示按默认的配置来生成一个任 务。
处理器链
• 预取链 – 主要是做一些准备工作,例如,对处理进行延迟和重 新处理,否决随後的操作。 • 提取链 – 主要是获得资源,进行DNS转换,填写请求和响应表 单 • 抽取链 – 当提取完成时,抽取感兴趣的HTML,JavaScript,通 常那里有新的也适合的URI,此时URI仅仅被发现,不 会被评估 • 写链 – 存储爬行结果,返回内容和抽取特性,过滤完存储。 • 提交链 – 做最後的维护,例如,测试那些不在范围内的,提交 给边 界部件
• J-Spider
– J-Spider:是一个完全可配置和定制的Web Spider引擎.你可以利用它来检查网站 的错误(内在的服务器错误等),网站内外部链接检查,分析网站的结构(可创建一 个网站地图),下载整个Web站点,你还可以写一个JSpider插件来扩展你所需要的 功能。
Java开源Web爬虫 2
• WebLech
– WebLech是一个功能强大的Web站点下载与镜像工具。它支持按功能需求来下 载web站点并能够尽可能模仿标准Web浏览器的行为。WebLech有一个功能控制 台并采用多线程操作。
• Arale
– Arale主要为个人使用b站点或来自web站点的某些资源。Arale还能够把动态页面映射 成静态页面。
order.xml
• 在Heritrix中,一个任务对应一个描述文件。这个描述文件的默认 的名称为order.xml。 • 每次创建一个新任务时,都相当于生成了一个 order.xml的文件。 • 文件中详细记录了Heritrix在运行时需要的所有信息。例如,它包 括该用户所选择的Processor类、 Frontier类、Fetcher类、抓取 时线程的最大数量、连接超时的最大等待时间等信息。 • 上面所说的4种创建抓取任务的方式,其实都是在生成一个 order.xml文件。 • 关于order.xml的细节,不必深究。因为它里面所有的内容,都会 在WebUI上看到。
settings
• max-toe-threads
– 该参数的含义很容易了解,它表示Heritrix在运行 该抓取任务时,为任务分配多少个线程进行同步 抓取。而事实上在机器配置和网络均很好的情况 下,设置50个线程数就已经足够使用了。
• HTTP-Header
– 在HTTP-Header这个属性域下面,包括两个属性 值“user-agent”和“from”。 – “@VERSION@”字符串需要被替换成Heritrix的 版本信息。 – “PROJECT_URL_HERE”可以被替换成任何一个 完整的URL地址。
搜索引擎
Heritrix介绍
• 在一个搜索引擎的开发过程中,使用一个合适 的爬虫来获得所需要的网页信息是第一步,这 一步是整个系统成功的基础。 • Heritrix是一个纯由Java开发的、开源的Web 网络爬虫,用户可以使用它从网络上抓取想要 的资源。 • 它来自于。 • Heritrix最出色之处在于它的可扩展性,开发者 可以扩展它的各个组件,来实现自己的抓取逻 辑。
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有条件的加入到待处理队列中去。
• Arachnid
– Arachnid: 是一个基于Java的web spider框架.它包含一个简单的HTML剖析器能够分析包 含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Web spiders并能 够在Web站上的每个页面被解析之后增加几行代码调用。 Arachnid的下载包中包含两个 spider应用程序例子用于演示如何使用该框架
– Nutch 只获取并保存可索引的内容。Heritrix则是照单全收。力求保存页 面原貌
Heritrix工作原理
• Heritrix是一个爬虫框架,可加如入一些可互换 的组件。它的执行是递归进行的,主要有以下 几步:
– 在预定的URI中选择一个。 – 获取URI – 分析,归档结果 – 选择已经发现的感兴趣的URI。加入预定队列。 – 标记已经处理过的URI
课堂练习:任务的设置方法
• Heritrix简单任务的设置方法
– Conf/heritrix.properties – jmxremote.password – profiles – 启动Heritrix – webUI – 抓取参数设置 – 运行抓取任务
例子: • 利用 Heritrix 构建特定站点爬虫
-Xmx512m
• 使用Heritrix时,考虑到内存的影响,可为其分 配512M的最大HeapSize,可以增大Heritrix的 最大可用内存,
– -Xmx512m
• -Xms -Xmx -Xss
set initial Java heap size set maximum Java heap size set java thread stack size
• LARM
– LARM能够为Jakarta Lucene搜索引擎框架的用户提供一个纯Java的搜索解决方案。它 包含能够为文件,数据库表格建立索引的方法和为Web站点建索引的爬虫。
• JoBo
– JoBo 是一个用于下载整个Web站点的简单工具。它本质是一个Web Spider。与其它下 载工具相比较它的主要优势是能够自动填充form(如:自动登录)和使用cookies来处理 session。JoBo还有灵活的下载规则(如:通过网页的URL,大小,MIME类型等)来限制 下载。
Java开源Web爬虫 1
• Heritrix
– Heritrix是一个开源,可扩展的web爬虫项目。Heritrix设计成严格按照robots.txt 文件的排除指示和META robots标签。
• WebSPHINX
– WebSPHINX是一个Java类包和Web爬虫的交互式开发环境。Web爬虫(也叫作 机器人或蜘蛛)是可以自动浏览与处理Web页面的程序。WebSPHINX由两部分组 成:爬虫工作平台和WebSPHINX类包。
• Lia.meetlucene.Indexer
安装
• Heritrix所用到的工具类库都存于lib下 • heritrix-1.12.1.jar是Heritrix的Jar包。 • 在Heritrix目录下有一个conf目录,其中包含了 一个很重要的文件:heritrix.properties。
– 在heritrix.properties中配置了大量与Heritrix运行息 息相关的参数,这些参数主要是配置了Heritrix运 行时的一些默认工 具类、WebUI的启动参数,以 及Heritrix的日志格式等。 – 当第一次运行Heritrix时,只需要修改该文件,为 其加入WebUI的登录名和密 码,如图10-2所示。
• Web-Harvest
– Web-Harvest是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些 页面中提取有用的数据。Web-Harvest主要是运用了像XSLT,XQuery,正则表达式等这些
Heritrix & Nutch
• 二者均为Java开源框架,Heritrix 是 SourceForge上的开源产品, Nutch为Apache的一个子项目,它们都称作网络爬虫/蜘蛛 ( Web Crawler),它们实现的原理基本一致:深度遍历网站 的资源,将这些资源抓取到本地,使用的方法都是分析网站每 一个有效的URI,并提交Http请求,从而获得相应结果,生成本 地文件及相应的日志信息等。 • Heritrix 是个 "archival crawler" -- 用来获取完整的、精确的、站 点内容的深度复制。包括获取图像以及其他非文本内容。抓取 并存储相关的内容。对内容来者不拒,不对页面进行内容上的 修改。重新爬行对相同的URL不针对先前的进行替换。爬虫通 过Web用户界面启动、监控、调整,允许弹性的定义要获取的 URL。 • 二者的差异:
• snoics-reptile
– snoics -reptile是用纯Java开发的,用来进行网站镜像抓取的工具,可以使用配制文件中 提供的URL入口,把这个网站所有的能用浏览器通过GET的方式获取到的资源全部抓取 到本地,包括网页和各种类型的文件,如:图片、flash、mp3、zip、rar、exe等文件。 可以将整个网站完整地下传至硬盘内,并能保持原有的网站结构精确不变。只需要把抓 取下来的网站放到web服务器(如:Apache)中,就可以实现完整的网站镜像。
启动方式
• Heritrix有多种方式启动,例如,可以使用 CrawlController,以后台方式加载一个抓取任 务,即为编程式启动。 • 不过最常见的还是以WebUI的方式启动它。
4种创建任务的方式
• Based on existing job:以一个已经有的抓取任务为模板,创 建所有抓取属性和抓取起始URL的列表。 • Based on a recovery:在以前的某个任务中,可能设置过一 些状态点,新的任务将从这个设置的状态点开始。 • Based on a profile:专门为不同的任务设置了一些模板,新 建的任务将按照模板来生成。 • With defaults:这个最简单,表示按默认的配置来生成一个任 务。
处理器链
• 预取链 – 主要是做一些准备工作,例如,对处理进行延迟和重 新处理,否决随後的操作。 • 提取链 – 主要是获得资源,进行DNS转换,填写请求和响应表 单 • 抽取链 – 当提取完成时,抽取感兴趣的HTML,JavaScript,通 常那里有新的也适合的URI,此时URI仅仅被发现,不 会被评估 • 写链 – 存储爬行结果,返回内容和抽取特性,过滤完存储。 • 提交链 – 做最後的维护,例如,测试那些不在范围内的,提交 给边 界部件
• J-Spider
– J-Spider:是一个完全可配置和定制的Web Spider引擎.你可以利用它来检查网站 的错误(内在的服务器错误等),网站内外部链接检查,分析网站的结构(可创建一 个网站地图),下载整个Web站点,你还可以写一个JSpider插件来扩展你所需要的 功能。
Java开源Web爬虫 2
• WebLech
– WebLech是一个功能强大的Web站点下载与镜像工具。它支持按功能需求来下 载web站点并能够尽可能模仿标准Web浏览器的行为。WebLech有一个功能控制 台并采用多线程操作。
• Arale
– Arale主要为个人使用b站点或来自web站点的某些资源。Arale还能够把动态页面映射 成静态页面。
order.xml
• 在Heritrix中,一个任务对应一个描述文件。这个描述文件的默认 的名称为order.xml。 • 每次创建一个新任务时,都相当于生成了一个 order.xml的文件。 • 文件中详细记录了Heritrix在运行时需要的所有信息。例如,它包 括该用户所选择的Processor类、 Frontier类、Fetcher类、抓取 时线程的最大数量、连接超时的最大等待时间等信息。 • 上面所说的4种创建抓取任务的方式,其实都是在生成一个 order.xml文件。 • 关于order.xml的细节,不必深究。因为它里面所有的内容,都会 在WebUI上看到。
settings
• max-toe-threads
– 该参数的含义很容易了解,它表示Heritrix在运行 该抓取任务时,为任务分配多少个线程进行同步 抓取。而事实上在机器配置和网络均很好的情况 下,设置50个线程数就已经足够使用了。
• HTTP-Header
– 在HTTP-Header这个属性域下面,包括两个属性 值“user-agent”和“from”。 – “@VERSION@”字符串需要被替换成Heritrix的 版本信息。 – “PROJECT_URL_HERE”可以被替换成任何一个 完整的URL地址。