从地图中提取Nutch提取的网页减少友好格式

时间:2012-04-11 00:04:09

标签: web-crawler nutch

在Nutch以分布式(部署)模式爬行之后,如下所示:

bin/nutch crawl s3n://..... -depth 10 -topN 50000 -dir /crawl -threads 20 

我需要提取在地图中提取的每个URL及其内容缩减友好格式。通过使用下面的readseg命令,可以获取内容,但输出格式不适合减少映射。

bin/nutch readseg -dump /crawl/segments/*  /output  -nogenerate -noparse -noparsedata -noparsetext

理想情况下,输出应采用以下格式:

http://abc.com/1     content of http://abc.com/1
http://abc.com/2     content of http://abc.com/2

有关如何实现这一目标的任何建议吗?

2 个答案:

答案 0 :(得分:0)

bin/nutch readseg命令以人类可读的格式生成输出,而不是map reduce格式。数据以map-reduce格式存储在段中。我不认为你可以直接从map-reduce格式的segements中提取信息。

您担心的几个选项:

  1. 细分自身是map-reduce格式文件。你可以重复使用吗?
  2. 可以通过编写一个小的map-reduce代码将readseg命令的输出转换为map-reduce形式。

答案 1 :(得分:0)

答案在于调整nutch的源代码。事实证明这很简单。导航到SegmentReader.java

上的apache-nutch-1.4-bin/src/java/org/apache/nutch/segment文件

SegmentReader类内部是一个方法reduce,它负责生成bin/nutch readseg命令生成的人类可读输出。根据您的需要更改StringBuffer dump变量 - 这将保存给定网址的整个输出,该输出由key变量表示。

确保您运行ant以创建新的二进制文件,并且对bin/nutch readseg的进一步调用将以您的自定义格式生成输出。

这些引用在导航代码时非常有用:
[1] http://nutch.apache.org/apidocs-1.4/overview-summary.html
[2] http://nutch.apache.org/apidocs-1.3/index-all.html