【问题标题】:Connecting MySQL to Apache nutch将 MySQL 连接到 Apache nutch
【发布时间】:2011-01-12 20:36:23
【问题描述】:

我是第一次使用 Apache Nutch。爬取后如何将数据存储到 MySQL 数据库中?我希望能够轻松地在其他 Web 应用程序中使用这些数据。

我找到了question related,但我不清楚代码 id 的哪一部分将被 MySQL 连接器替换。请提供一个简短的代码示例。

【问题讨论】:

  • 嗯,我也尝试过,但我认为这里没有明确而简单的解决方案。我只是尝试调用 nutch 爬虫来一次爬取一个域,他应该将这些数据保存到 drupal 数据库中。索引应该由 solr thru drupal 完成。这就是理论,但现在实践让我抓狂。那么,愿意与他人分享他的意见的人是否有机会了解工作流程?

标签: java mysql nutch


【解决方案1】:

http://mirror.nyi.net/apache//nutch/apache-nutch-1.2-src.zip获取源码

在您的编辑器中打开org.apache.nutch.crawl.Crawl 类。

查找变量Path crawlDb = new Path(dir + "/crawldb");

该变量将提示在何处替换代码以获得您自己的CustomMySQLCrawl 类。

在此调用期间发生持久性:crawlDbTool.update(crawlDb, segs, true, true); // update crawldb 因此,您应该将其保存到数据库中。此时您可能需要考虑集成 hibernate。

【讨论】:

    【解决方案2】:

    我看到了 2 种可能性:要么从 Nutch 在爬网作业结束时创建的 Lucene 索引中获取内容(我认为它在 Nutch 2.0 中被删除),要么在每次迭代时从段中获取数据。

    如果 Lucene 索引中的内容对您来说足够了,那么这样可能会更容易。但如果您需要更多,每个片段都包含 Nutch 获取的所有内容。

    【讨论】:

      【解决方案3】:

      如果您将使用 Nutch 的二进制可执行文件,请在抓取后运行 -readseg 命令。它会给你一个巨大的文件,其中包含所有原始 html 和其他信息。之后您可以解析并保存所需的数据到数据库。

      如果您愿意在 Eclipse 中运行 Nutch,您应该在 Fetcher 类中添加一些代码。

      pstatus = output(fit.url, fit.datum, content, status, CrawlDatum.STATUS_FETCH_SUCCESS);
      updateStatus(content.getContent().length);
      

      在 Fetcher 类中的这些行之后编写一个简单的调用并写入数据库代码。您可以通过以下方式获取原始 html:

      content.getContent();
      

      这将返回 html 文件的字节数组表示,将其转换为字符串并将其保存到数据库中。您可能会遇到字符编码问题:Nutch with UTF-8 来配置 Nutch。但是,这个问题一般是由 Eclipse 的编码引起的。为了克服这个问题,获取包含“charset”值的内容的子字符串:

      String yourContent = new String(content.getContent, encodingYouFound);
      

      这里的“encoding”是一个字符串,所以从“内容”中检索它就足够了。如果不能,某些网站可能没有 charset 属性,请使用通用编码,例如 UTF-8。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-10
        • 2018-06-23
        • 2015-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多