使用Apache Nutch进行解析和存储

时间:2017-04-09 18:02:03

标签: parsing web-crawler hbase nutch

我正在尝试开发一个Crawler来抓取youtube.com并解析元信息(标题,描述,发布商等)并将这些信息存储到Hbase /其他存储系统中。我明白我必须编写插件来实现这一点。但是我很困惑我需要为此编写什么插件。我正在检查这四个 -

Parser
ParserFilter
Indexer
IndexFilter

要解析youtube页面的特定元数据信息,我是否需要编写自定义Parser插件或ParseFilter插件以及使用parse-html插件?

解析后,要将条目存储在Hbase /其他存储系统中,我是否需要编写IndexWriter插件?通过索引,我们通常理解Solr,ElasticSearch等中的索引。但是我并不需要在任何搜索引擎中进行索引。那么,如何在解析之后将它们存储在一些商店中,比如说Hbase?

提前致谢!

2 个答案:

答案 0 :(得分:2)

由于youtube是一个网页,因此您需要编写一个HtmlParseFilter,这样您就可以访问从服务器获取的原始HTML,但目前您需要大量的javascript而且{{1} }或parse-html支持执行js代码,因此我建议您使用protocol-selenium插件,这样您就可以将网页的呈现委托给selenium驱动程序并获取HTML(在所有JS之后)已被执行)。在编写自己的parse-tika之后,您需要编写自己的HtmlParseFilter,在这种情况下,您只需要指定要发送到后端的信息,这完全是后端不可知的并且仅依赖于Nutch代码库(这就是为什么你需要自己的IndexingFilter)。

我假设您正在使用Nutch 1.x,在这种情况下,您需要为后端编写自定义IndexWriter(这非常简单)。如果你使用Nutch 2.x,你可以通过Apache Gora访问几个后端,但是你会丢失一些功能(比如protocol-selenium)。

答案 1 :(得分:0)

我认为你应该使用像 Crawler4j 这样的东西。

当您想要进行更广泛的搜索或想要将数据直接索引到Solr / ES时,可以使用Nutch的真正功能。但由于您只想下载每个URL的数据,我会完全使用Crawler4j。它更容易设置,不需要复杂的配置。