使用 Apache Nutch 解析和存储

Parse and store using Apache Nutch

我正在尝试开发一个爬虫来爬取 youtube.com 并解析元信息(标题、描述、发布者等)并将它们存储到 Hbase/other 存储系统中。我知道我必须编写插件来实现这一点。但是我很困惑我需要为此编写哪些插件。我正在检查这四个 -

Parser
ParserFilter
Indexer
IndexFilter

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

解析后,要将条目存储在Hbase/other存储系统中,是否需要编写IndexWriter插件?关于索引,我们一般理解Solr、ElasticSearch等中的索引。但是我显然不需要在任何搜索引擎中索引。那么,如何在解析后将它们存储在 Hbase 等商店中?

提前致谢!

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

我假设您使用的是 Nutch 1.x,在这种情况下是的,您需要为您的后端编写自定义 IndexWriter(这很容易)。如果您使用 Nutch 2.x,您将可以通过 Apache Gora 访问多个后端,但是您将缺少一些功能(例如 protocol-selenium)。

我认为您应该使用 Crawler4j 之类的东西来满足您的目的。

当您想进行更广泛的搜索或希望将数据直接索引到 Solr/ES 时,Nutch 的真正威力就会发挥出来。但由于您只想下载每个 URL 的数据,我完全会选择 Crawler4j。设置起来更容易,不需要复杂的配置。