Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从nutch转储html文件_Nutch_Dump - Fatal编程技术网

如何从nutch转储html文件

如何从nutch转储html文件,nutch,dump,Nutch,Dump,我是新手。我从网上爬了很多网站。我想得到段的html内容。因此,我通过follow命令转储: ./nutch mergesegs crawl/merged crawl/segments/* 然后: ./nutch readseg -dump crawl/merged/* dumpedContent 现在。dumpedContent中有两个文件:dump和.dump.crc 转储的大小太大(82GB) 如何将每个原始网页转储到一个文件中?或者如何在小文件中转储?您得到的是一个大文件,因为您首先

我是新手。我从网上爬了很多网站。我想得到段的html内容。因此,我通过follow命令转储:

./nutch mergesegs crawl/merged crawl/segments/*
然后:

./nutch readseg -dump crawl/merged/* dumpedContent
现在。dumpedContent中有两个文件:dump和.dump.crc

转储的大小太大(82GB)


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

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

目前,
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文件的关系

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


然而,如果您需要对它们进行单独的解析和存储,那么您可能需要研究它们。您可以根据解析的内容定义存储位置和内容。我最近尝试过这个方法,当涉及到在目录文件夹中存储单独的HTML页面时,它是有效的。希望这有帮助。

谢谢你的回答。我在Solr中通过:
/nutch solrindex为这个爬网数据编制了索引http://localhost:8983/solr/ 爬网/crawdb-linkdb爬网/linkdb爬网/segments/*
。html文件在哪里?我需要所有html文件来分析原因。请帮助提取html文件。您尚未指定正在使用的Nutch版本,
solrindex
已被弃用,您应该改用
/bin/Nutch index
。您需要为
index
命令指定
-addBinaryContent
标志。查看
/bin/nutch index
的输出以检查可用选项。我正在使用
nutch 1.4
,通过此命令,所有数据都已成功索引。现在我可以用solr搜索了。但我只需要html文件。我对
-addBinaryContent
标志一无所知。你能给我一个命令来提取html文件吗?Nutch1.4是一个非常旧的版本,你应该升级到1.14(trunk/master)。该命令与您发布的命令相同:
/nutch solrindexhttp://localhost:8983/solr/ crawl/crawdb-linkdb crawl/linkdb-addBinaryContent
同样,你不会得到HTML文件,在Solr中你会有一个包含原始内容的字段。我知道这是一个非常旧的版本。但我已经用这个版本爬网了:(.我运行您的命令:
/nutch solrindexhttp://localhost:8983/solr/ crawl/crawdb-linkdb crawl/linkdb crawl/segments/*-addBinaryContent
。但它会引发以下错误:
输入路径不存在:crawl/-addBinaryContent/parse_text
。我认为Nutch 1.4不支持此标志!我说得对吗?拥有原始内容会很棒。