nutch介绍信息下载

weixin_39821746 2019-07-27 09:00:20
java实现的开源搜索引擎nutch
主要类分析:
一、org.apache.nutch.crawl.Injector:
1,注入url.txt
2,url标准化
3,拦截url,进行正则校验(regex-urlfilter.txt)
4,对符URL标准的url进行map对构造<url, CrawlDatum>,在构造过程中给CrawlDatum初始化得分,分数可影响url host的搜索排序,和采集优先级!
5,reduce只做一件事,判断url是不是在crawldb中已经存在,如果存在则直接读取原来CrawlDatum,如果是新host,则把相应状
相关下载链接://download.csdn.net/download/flqqoffvqqef/3877699?utm_source=bbsseo
...全文
13 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
一个gecco爬虫框架,简单易用,使用jquery风格的选择器抽取元素 支持爬取规则的动态配置和加载 支持页面中的异步ajax请求 支持页面中的javascript变量抽取 利用Redis实现分布式抓取,参考gecco-redis 支持结合Spring开发业务逻辑,参考gecco-spring 支持htmlunit扩展,参考gecco-htmlunit 支持插件扩展机制 支持下载时UserAgent随机选取 支持下载代理服务器随机选取 Gecco是一款用java语言开发的轻量化的易用的网络爬虫,不同于Nutch这样的面向搜索引擎的通用爬虫,Gecco是面向主题的爬虫。 通用爬虫一般关注三个主要的问题:下载、排序、索引。 主题爬虫一般关注的是:下载、内容抽取、灵活的业务逻辑处理。 Gecco的目标是提供一个完善的 » 二、一分钟你就可以写一个简单爬虫 示例代码 这里用抓取gecco这个项目的首页为例。我们希望得到项目的作者名称,项目名称,项目的star和fork数量,以及项目的介绍。如果你稍有java基础,会写jquery的css selector我相信下面的代码我不需要解释你也能轻松的看明白。 @Gecco(matc » 三、软件总体结构 基本构件介绍 GeccoEngine GeccoEngine是爬虫引擎,每个爬虫引擎最好是一个独立进程,在分布式爬虫场景下,建议每台爬虫服务器(物理机或者虚机)运行一个GeccoEngine。爬虫引擎包括主要Scheduler、Downloader、Spider、SpiderB » 四、GeccoEngine Gecco如何运行 Gecco的初始化和启动通过GeccoEngine完成,GeccoEngine主要负责初始化配置、开始请求的配置和启动爬虫运行,最基本的启动方法: GeccoEngine.create() .classpath("com.geccocrawler.ge » 五、从下载说起 一、下载引擎 爬虫最基本的能力就是发起http请求,下载网页,gecco默认采用httpclient4作为下载引擎。通过实现Downloader接口可以自定义自己的下载引擎,在启动GeccoEngine时需要设置自己的下载引擎。下面的代码不是使用默认的httpclient作为下载 » 六、抽取页面内容 gecco的内容抽取都是直接映射到java bean的属性中,利用注解可以方便的注入页面中的各种信息包括html页面内容、Ajax请求、javascript变量、request信息等 一、Html页面内容抽取 jsoup语法介绍 Selector选择器概述 tagname: » 七、业务逻辑处理 至此页面内容已经被gecco转换为一个普通的javabean。剩下的工作就是将javabean进一步清洗然后针对特定的业务逻辑进行持久化等处理。 一、实现pipeline接口 gecco采用管道过滤器模式灵活的实现业务逻辑处理,首先实现一个特定的管道过滤器,如: @Pipelin » 八、爬虫的监控 爬虫为什么要监控 gecco是一个十分简单易用的java开源爬虫框架,同时也一个款拥有很好扩展性的框架,目前已经有: 结合spring的插件gecco-spring 结合htmlunit的插件gecco-htmlunit 结合reids的插件gecco-reids 在开发爬虫时, » 九、稳定性测试 最近对开源的java爬虫Gecco做了一个稳定性测试,测试环境:一台爬虫+web应用服务器,一台mongodb服务器。服务器配置很low,两台都是阿里云最低端的主机,1核+512内存。 单线程测试场景 爬虫采用单线程,测试时间3×24小时,测试期间系统无异常,jvm内存稳定。测试 十、Gecco爬虫框架的线程和队列模型
网络爬虫调研报告 基本原理 Spider概述 Spider即网络爬虫 ,其定义有广义和狭义之分。狭义上指遵循标准的 http协议利用超链接和 Web文档检索的方法遍历万维网信息空间的软件程序 ;而广义的定义则是所有能遵循 http协议检索 Web文档的软件都称之为网络爬虫。 Spider是一个功能很强的自动提取网页的程序 ,它为搜索引擎从万维网上下载网页 ,是搜索引擎的重要组成 .它通过请求站点上的 HTML文档访问某一站点。它遍历 Web空间 ,不断从一个站点移动到另一个站点 ,自动建立索引 ,并加入到网页数据库中。网络爬虫进入某个超级文本时 ,它利用 HTML语言的标记结构来搜索信息及获取指向其他超级文本的 URL地址 ,可以完全不依赖用户干预实现网络上的自动爬行和搜索。 Spider的队列 (1)等待队列 :新发现的 URL被加入到这个队列 ,等待被 Spider程序处理 ; (2)处理队列 :要被处理的 URL被传送到这个队列。为了避免同一个 URL被多次处理 ,当一个 URL被处理过后 ,它将被转移到完成队列或者错误队列 (如果发生错误 )。 (3)错误队列 :如果在下载网页是发生错误 ,该 URL将被加入 到错误队列。 (4)完成队列 :如果在处理网页没有发生错误 ,该 URL将被加入到完成队列。 网络爬虫搜索策略 在抓取网页的时候 ,目前网络爬虫一般有两种策略 :无主题搜索与基于某特定主体的专业智能搜索。其中前者主要包括 :广度优先和深度优先。广度优先是指网络爬虫会先抓取起始网页中链接的所有网页 ,然后再选择其中的一个链接网页 ,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让网络爬 虫并行处理 ,提高其抓取速度。深度优先是指网络爬虫会从起始页开始 ,一个链接一个链接跟踪下去 ,处理完这条线路之后再转入下一个起始页 ,继续跟踪链接。这个方法有个优点是网络爬虫在设计的时候比较容易。大多数网页爬行 器采用宽度优先搜索策略或者是对这种策略的某些改进。 在专业搜索引擎中 ,网络爬虫的任务是获取 Web页面和决定链接的访问顺序 ,它通常从一个 "种子集 "(如用户查询、种子链接或种子页面 )发,以迭代的方式访问页面和提取链接。搜索过程中 ,未访问的链接被暂存在一个称为 "搜索前沿 "(Spider Frontier)的队列中 ,网络爬虫根据搜索前沿中链接的 "重要程度 "决定下一个要访问的链接。如何评价和预测链接的 "重要程度 "(或称价值 )是决定网络爬虫搜索策略的关键。 众多的网络爬虫设计各不相同 ,但归根结底是采用不同的链接价值评价标准。 常用开源网络爬虫介绍及其比较 Nutch 开发语言:Java 简介: Apache的子项目之一,属于Lucene项目下的子项目。 Nutch是一个基于Lucene,类似Google的完整网络搜索引擎解决方案,基于Hadoop的 分布式处理模型保证了系统的性能,类似Eclipse的插件机制保证了系统的可客户化,而 且很容易集成到自己的应用之中。 Larbin 开发语言:C++ 简介   larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人 Sébastien Ailleret独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎 提供广泛的数据来源。   Larbin只是一个爬虫,也就是说larbin只抓取网页,至于如何parse的事情则由 用户自己完成。另外,如何存储到数据库以及建立索引的事情 larbin也不提供。   latbin最初的设计也是依据设计简单但是高度可配置性的原则,因此我们可以看 到,一个简单的larbin的爬虫可以每天获取500万的网页,非常高效。 Heritrix 开发语言:Java 简介 与Nutch比较 Heritrix 和 Nutch。二者均为Java开源框架,Heritrix 是 SourceForge上的开源产品,Nutch为Apache的一个子项目,它们都称作网络爬虫/蜘蛛( Web Crawler),它们实现的原理基本一致:深度遍历网站的资源,将这些资源抓取到本地, 使用的方法都是分析网站每一个有效的URI,并提交Http请求,从而获得相应结果,生成 本地文件及相应的日志信息等。 Heritrix 是个 "archival crawler" -- 用来获取完整的、精确的、站点内容的深度复制。包括获取图像以及其他非文本内容。 抓取并存储相关的内容。对内容来者不拒,不对页面进行内容上的修改。重新爬行对相 同的URL不针对先前的进行替换。爬虫通过Web用户界面启动、监控、调整,允许弹性的 定义要获取的URL。 二者的差异: Nutch 只获取并保存可索引的内容。Heritrix则是照单全收。力求保存页
体顶端 网络爬虫调研报告 基本原理 Spider概述 Spider即网络爬虫 ,其定义有广义和狭义之分。狭义上指遵循标准的 http协议利用超链接和 Web文档检索的方法遍历万维网信息空间的软件程序 ;而广义的定义则是所有能遵循 http协议检索 Web文档的软件都称之为网络爬虫。 Spider是一个功能很强的自动提取网页的程序 ,它为搜索引擎从万维网上下载网页 ,是搜索引擎的重要组成 .它通过请求站点上的 HTML文档访问某一站点。它遍历 Web空间 ,不断从一个站点移动到另一个站点 ,自动建立索引 ,并加入到网页数据库中。网络爬虫进入某个超级文本时 ,它利用 HTML语言的标记结构来搜索信息及获取指向其他超级文本的 URL地址 ,可以完全不依赖用户干预实现网络上的自动爬行和搜索。 Spider的队列 (1)等待队列 :新发现的 URL被加入到这个队列 ,等待被 Spider程序处理 ; (2)处理队列 :要被处理的 URL被传送到这个队列。为了避免同一个 URL被多次处理 ,当一个 URL被处理过后 ,它将被转移到完成队列或者错误队列 (如果发生错误 )。 (3)错误队列 :如果在下载网页是发生错误 ,该 URL将被加入 到错误队列。 (4)完成队列 :如果在处理网页没有发生错误 ,该 URL将被加入到完成队列。 网络爬虫搜索策略 在抓取网页的时候 ,目前网络爬虫一般有两种策略 :无主题搜索与基于某特定主体的专业智能搜索。其中前者主要包括 :广度优先和深度优先。广度优先是指网络爬虫会先抓取起始网页中链接的所有网页 ,然后再选择其中的一个链接网页 ,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让网络爬 虫并行处理 ,提高其抓取速度。深度优先是指网络爬虫会从起始页开始 ,一个链接一个链接跟踪下去 ,处理完这条线路之后再转入下一个起始页 ,继续跟踪链接。这个方法有个优点是网络爬虫在设计的时候比较容易。大多数网页爬行 器采用宽度优先搜索策略或者是对这种策略的某些改进。 在专业搜索引擎中 ,网络爬虫的任务是获取 Web页面和决定链接的访问顺序 ,它通常从一个 "种子集 "(如用户查询、种子链接或种子页面 )发,以迭代的方式访问页面和提取链接。搜索过程中 ,未访问的链接被暂存在一个称为 "搜索前沿 "(Spider Frontier)的队列中 ,网络爬虫根据搜索前沿中链接的 "重要程度 "决定下一个要访问的链接。如何评价和预测链接的 "重要程度 "(或称价值 )是决定网络爬虫搜索策略的关键。 众多的网络爬虫设计各不相同 ,但归根结底是采用不同的链接价值评价标准。 常用开源网络爬虫介绍及其比较 Nutch 开发语言:Java 简介: Apache的子项目之一,属于Lucene项目下的子项目。 Nutch是一个基于Lucene,类似Google的完整网络搜索引擎解决方案,基于Hadoop的 分布式处理模型保证了系统的性能,类似Eclipse的插件机制保证了系统的可客户化,而 且很容易集成到自己的应用之中。 Larbin 开发语言:C++ 简介   larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人 Sébastien Ailleret独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎 提供广泛的数据来源。   Larbin只是一个爬虫,也就是说larbin只抓取网页,至于如何parse的事情则由 用户自己完成。另外,如何存储到数据库以及建立索引的事情 larbin也不提供。   latbin最初的设计也是依据设计简单但是高度可配置性的原则,因此我们可以看 到,一个简单的larbin的爬虫可以每天获取500万的网页,非常高效。 Heritrix 开发语言:Java 简介 与Nutch比较 Heritrix 和 Nutch。二者均为Java开源框架,Heritrix 是 SourceForge上的开源产品,Nutch为Apache的一个子项目,它们都称作网络爬虫/蜘蛛( Web Crawler),它们实现的原理基本一致:深度遍历网站的资源,将这些资源抓取到本地, 使用的方法都是分析网站每一个有效的URI,并提交Http请求,从而获得相应结果,生成 本地文件及相应的日志信息等。 Heritrix 是个 "archival crawler" -- 用来获取完整的、精确的、站点内容的深度复制。包括获取图像以及其他非文本内容。 抓取并存储相关的内容。对内容来者不拒,不对页面进行内容上的修改。重新爬行对相 同的URL不针对先前的进行替换。爬虫通过Web用户界面启动、监控、调整,允许弹性的 定义要获取的URL。 二者的差异: Nutch 只获取并保存可索引的内容。Heritrix则是照单全收。力
窗体顶端 网络爬虫调研报告 基本原理 Spider概述 Spider即网络爬虫 ,其定义有广义和狭义之分。狭义上指遵循标准的 http协议利用超链接和 Web文档检索的方法遍历万维网信息空间的软件程序 ;而广义的定义则是所有能遵循 http协议检索 Web文档的软件都称之为网络爬虫. Spider是一个功能很强的自动提取网页的程序 ,它为搜索引擎从万维网上下载网页 ,是搜索引擎的重要组成 。它通过请求站点上的 HTML文档访问某一站点.它遍历 Web空间 ,不断从一个站点移动到另一个站点 ,自动建立索引 ,并加入到网页数据库中。网络爬虫进入某个超级文本时 ,它利用 HTML语言的标记结构来搜索信息及获取指向其他超级文本的 URL地址 ,可以完全不依赖用户干预实现网络上的自动爬行和搜索。 Spider的队列 (1)等待队列 :新发现的 URL被加入到这个队列 ,等待被 Spider程序处理 ; (2)处理队列 :要被处理的 URL被传送到这个队列。为了避免同一个 URL被多次处理 ,当一个 URL被处理过后 ,它将被转移到完成队列或者错误队列 (如果发生错误 )。 (3)错误队列 :如果在下载网页是发生错误 ,该 URL将被加入 到错误队列。 (4)完成队列 :如果在处理网页没有发生错误 ,该 URL将被加入到完成队列。 网络爬虫搜索策略 在抓取网页的时候 ,目前网络爬虫一般有两种策略 :无主题搜索与基于某特定主体的专业智能搜索。其中前者主要包括 :广度优先和深度优先。广度优先是指网络爬虫会先抓取起始网页中链接的所有网页 ,然后再选择其中的一个链接网页 ,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让网络爬 虫并行处理 ,提高其抓取速度。深度优先是指网络爬虫会从起始页开始 ,一个链接一个链接跟踪下去 ,处理完这条线路之后再转入下一个起始页 ,继续跟踪链接。这个方法有个优点是网络爬虫在设计的时候比较容易。大多数网页爬 行器采用宽度优先搜索策略或者是对这种策略的某些改进. 在专业搜索引擎中 ,网络爬虫的任务是获取 Web页面和决定链接的访问顺序 ,它通常从一个 "种子集 "(如用户查询、种子链接或种子页面 )发,以迭代的方式访问页面和提取链接。搜索过程中 ,未访问的链接被暂存在一个称为 "搜索前沿 "(Spider Frontier)的队列中 ,网络爬虫根据搜索前沿中链接的 "重要程度 "决定下一个要访问的链接。如何评价和预测链接的 "重要程度 "(或称价值 )是决定网络爬虫搜索策略的关键。 众多的网络爬虫设计各不相同 ,但归根结底是采用不同的链接价值评价标准。 常用开源网络爬虫介绍及其比较 Nutch 开发语言:Java 简介: Apache的子项目之一,属于Lucene项目下的子项目。 Nutch是一个基于Lucene,类似Google的完整网络搜索引擎解决方案,基于Hadoop的 分布式处理模型保证了系统的性能,类似Eclipse的插件机制保证了系统的可客户化,而 且很容易集成到自己的应用之中. Larbin 开发语言:C++ 简介   larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人 Sébastien Ailleret独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎 提供广泛的数据来源。   Larbin只是一个爬虫,也就是说larbin只抓取网页,至于如何parse的事情则由 用户自己完成。另外,如何存储到数据库以及建立索引的事情 larbin也不提供。   latbin最初的设计也是依据设计简单但是高度可配置性的原则,因此我们可以看 到,一个简单的larbin的爬虫可以每天获取500万的网页,非常高效。 Heritrix 开发语言:Java 简介 与Nutch比较 Heritrix 和 Nutch.二者均为Java开源框架,Heritrix 是 SourceForge上的开源产品,Nutch为Apache的一个子项目,它们都称作网络爬虫/蜘蛛( Web Crawler),它们实现的原理基本一致:深度遍历网站的资源,将这些资源抓取到本地, 使用的方法都是分析网站每一个有效的URI,并提交Http请求,从而获得相应结果,生成 本地文件及相应的日志信息等。 Heritrix 是个 "archival crawler" -- 用来获取完整的、精确的、站点内容的深度复制.包括获取图像以及其他非文本内容.抓 取并存储相关的内容。对内容来者不拒,不对页面进行内容上的修改。重新爬行对相同 的URL不针对先前的进行替换。爬虫通过Web用户界面启动、监控、调整,允许弹性的定 义要获取的URL。 二者的差异: Nutch 只获取并保存可索引的内容。Heritrix则是照单全收。

12,695

社区成员

发帖
与我相关
我的任务
社区描述
CSDN 下载资源悬赏专区
其他 技术论坛(原bbs)
社区管理员
  • 下载资源悬赏专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧