gpt4 book ai didi

nutch - 如何从 nutch 获取 html 内容

转载 作者:行者123 更新时间:2023-12-04 15:04:07 25 4
gpt4 key购买 nike

有没有什么办法可以在抓取网页的同时获取每个网页的html内容?

最佳答案

是的,您可以实际导出已抓取片段的内容。这并不简单,但对我来说效果很好。首先,使用以下代码创建一个java项目:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
import org.apache.nutch.protocol.Content;
import org.apache.nutch.util.NutchConfiguration;

import java.io.File;
import java.io.FileOutputStream;

public class NutchSegmentOutputParser {

public static void main(String[] args) {

if (args.length != 2) {
System.out.println("usage: segmentdir (-local | -dfs <namenode:port>) outputdir");
return;
}

try {
Configuration conf = NutchConfiguration.create();
FileSystem fs = FileSystem.get(conf);


String segment = args[0];

File outDir = new File(args[1]);
if (!outDir.exists()) {
if (outDir.mkdir()) {
System.out.println("Creating output dir " + outDir.getAbsolutePath());
}
}

Path file = new Path(segment, Content.DIR_NAME + "/part-00000/data");
SequenceFile.Reader reader = new SequenceFile.Reader(fs, file, conf);


Text key = new Text();
Content content = new Content();

while (reader.next(key, content)) {
String filename = key.toString().replaceFirst("http://", "").replaceAll("/", "___").trim();

File f = new File(outDir.getCanonicalPath() + "/" + filename);
FileOutputStream fos = new FileOutputStream(f);
fos.write(content.getContent());
fos.close();
System.out.println(f.getAbsolutePath());
}
reader.close();
fs.close();
} catch (Exception e) {
e.printStackTrace();
}

}

}

我推荐使用 Maven;添加以下依赖项:
     <dependency>
<groupId>org.apache.nutch</groupId>
<artifactId>nutch</artifactId>
<version>1.5.1</version>
</dependency>

<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>0.23.1</version>
</dependency>

并创建一个 jar 包(即 NutchSegmentOutputParser.jar)

您需要在您的机器上安装 Hadoop。然后运行:
$/hadoop-dir/bin/hadoop --config \
NutchSegmentOutputParser.jar:~/.m2/repository/org/apache/nutch/nutch/1.5.1/nutch-1.5.1.jar \
NutchSegmentOutputParser nutch-crawled-dir/2012xxxxxxxxx/ outdir

其中 nutch-crawled-dir/2012xxxxxxxxx/是您要从中提取内容的爬网目录(它包含“段”子目录),而 outdir 是输出目录。输出文件名是从 URI 生成的,但是,斜杠被替换为“_”。

希望能帮助到你。

关于nutch - 如何从 nutch 获取 html 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5123757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com