如何从nutch转储html文件

时间:2017-11-02 14:46:58

标签: nutch dump

我是nutch的新人。我从互联网上抓了很多网站。我想获得段的html内容。因此,我被跟随命令抛弃了:

Count Name                      Group
----- ----                      -----
1 7148                      {@{Id=7148; ProcessName=ApMsgFwd}}

然后:

./nutch mergesegs crawl/merged crawl/segments/*

现在。我在dumpedContent有两个文件:dump和.dump.crc

转储的大小太大(82GB)。

如何将每个原始网页转储到一个文件中?或者如何在小文件中转储?

2 个答案:

答案 0 :(得分:0)

你得到一个大文件,因为你首先用(mergesegs)合并段,你可以尝试将每个段转储到它自己的文件中。

目前SegmentReader类不支持将每个单独的URL拆分为单独的文件,并且不确定这是否是我们想要支持的内容。对于真正的大爬行来说,这肯定是一个问题。无论如何请记住,-dump选项始终将一些元数据附加到已爬网的URL,因此您不仅获取HTML内容,还获取一些元数据。例如:

Recno:: 0
URL:: http://example.org

CrawlDatum::
Version: 7
Status: 33 (fetch_success)
Fetch time: Wed Oct 25 16:32:14 CEST 2017
Modified time: Thu Jan 01 01:00:00 CET 1970
Retries since fetch: 0
Retry interval: 2592000 seconds (30 days)
Score: 0.0
Signature: null
Metadata:
    _ngt_=1508941926882
    _repr_=http://example.org
    _pst_=success(1), lastModified=0
    _rs_=478
    Content-Type=text/html
    nutch.protocol.code=200

Content::
Version: -1
url: http://example.org
base: http://example.org
contentType: text/html
metadata: X-Cache=HIT Connection=close Date=Wed, 25 Oct 2017 14:30:53 GMT nutch.crawl.score=0.0 nutch.fetch.time=1508941934366 Accept-Ranges=bytes nutch.segment.name=20171025163209 Cache-Control=max-age=600 Content-Encoding=gzip Vary=Accept-Encoding,Cookie Expires=Wed, 25 Oct 2017 14:40:53 GMT Content-Length=20133 X-Cache-Hits=1 _fst_=33 Age=78 Content-Type=text/html; charset=UTF-8
Content:
...

因此,您需要处理此文件以获取原始HTML。

其他选项是使用-addBinaryContent标记将内容索引到Solr / ES中,并且您将拥有存储在Solr / ES中的页面的原始内容。这里的优点是您可以查询特定的URL。因此,您可以将Solr / ES中的数据提取到您想要的任何格式/文件中。

另一种选择是使用bin/nutch commoncrawldump功能,这将允许您将内容输出为不同的格式,现在不确定是否可以执行1 URL到1文件关系。

答案 1 :(得分:0)

Nutch SegmentReader是将所有HTML内容转储到一个文件中的好方法。这通常会导致从您的起始URL(以及它们的链接和外链)中存储HTML内容。

但是,如果您需要单独解析和存储它们,您可能需要查看writing plugins。您可以根据解析的内容定义存储位置和内容。我最近尝试过这个,在将单独的HTML页面存储在目录文件夹中时效率很高。希望这会有所帮助。