我是nutch的新人。我从互联网上抓了很多网站。我想获得段的html内容。因此,我被跟随命令抛弃了:
Count Name Group
----- ---- -----
1 7148 {@{Id=7148; ProcessName=ApMsgFwd}}
然后:
./nutch mergesegs crawl/merged crawl/segments/*
现在。我在dumpedContent有两个文件:dump和.dump.crc
转储的大小太大(82GB)。
如何将每个原始网页转储到一个文件中?或者如何在小文件中转储?
答案 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页面存储在目录文件夹中时效率很高。希望这会有所帮助。