【问题标题】:Apache Nutch Crawl Dynamic ProductsApache Nutch 爬行动态产品
【发布时间】:2013-09-14 13:01:56
【问题描述】:

目前我们使用 Apache Solr 作为搜索引擎,使用 Apache Nutch 作为 Crawler。现在我们已经创建了一个包含动态生成的产品的站点。

由于当前设置将搜索内容字段中的内容,因此每当我们搜索动态产品时,它不会出现在搜索结果中。

您能否指导我如何将页面上的动态产品抓取并索引到 Apache Solr?我们可以使用 Sitemap.xml 执行此操作吗?如果可以,请建议如何操作?

谢谢!

【问题讨论】:

    标签: solr nutch web-crawler sitemap.xml


    【解决方案1】:

    一种可能的解决方案是:

    步骤1)将每个动态产品的描述放在自己的页面中。例如http://domain/product?id=xxx(或使用更友好的网址,例如http://domain/product-x)。

    第 2 步)您需要一个或多个页面来列出这些产品的网址。您提到的 sitemap.xml 是一种选择,但一个简单的 html 页面也足够了。因此,例如,您可以动态生成一个名为 products_list 的页面,其中包含如下条目:<a href="http://domain/product?id=xxx">Product x</a>。

    第 3 步)您应该将 products_list 页面的 url 添加到您的 nutch 种子文件中,或者在已经抓取的页面之一中包含指向它的链接。

    【讨论】:

    • 其实动态产品本身没有url。 Thay 使用 AJAX 调用获取。下面是一个例子。在这里你可以不同的产品。请指导我如何在 Apache Solr 中抓取和索引这些内容。 www-hk.mcdonalds.com/hk/en/food/a-la-carte-explorer-view/… 当您点击列表视图时,您将在列表中获得产品列表,URL 如下:www-hk.mcdonalds.com/hk/en/food/a-la-carte-list-view/… 谢谢!
    • 好吧,这比我想象的要难。对于 ajax 调用,您应该寻找它的目标。例如,在这个特定站点中,它实际上使用 ajax 调用从这个 url 读取其列表:http://www-hk.mcdonalds.com/content/hk/en/food/a-la-carte-list-view/burgers-list-view.hk_nutri.list.6|7|8|9|10|11|.en.html。所以你应该把这个url介绍给nutch。此外,由于您没有为每个产品设置单独的页面,因此您需要编写一个 nutch 插件(一个 HtmlParseFilter 插件)来解析此页面并在该插件中生成多个文档。
    • 我对java没有太多经验。你能帮我提供新的文件或链接吗?此外,nutch 中是否有可用的内置配置来完成上述要求。我的意思是可以通过更改配置级别来做到这一点。目前我正在使用 Nutch 1.6 版!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多