0

我用Nutch抓取页面,在索引之前,我将内容保存到Fetcher类中的单独文件中,所以我不使用-readseg从索引文件中取回它们。但是,“ü”和“ç”等特殊字符保存为“?”。

我做了Nutch Wiki 页面中推荐的一切。编辑了标签的编码属性为UTF-8,它仍然不起作用。我遇到了一些关于在系统文件中更改语言的建议。我在Ubuntu 11.10工作。

4

3 回答 3

1

我能想到的有3种可能性:

  1. Nutch 工作正常,您的代码将内容正确写入文件,但您的环境(终端/编辑器)未在输出控制台上正确显示字符。
  2. 您写出内容的代码(由 nutch 抓取)没有处理 UTF-8 编码。
  3. Nutch 未正确处理 UTF-8 编码。

我已经用 Nucth 抓取了包含中文字符的页面,并且我能够在readseg输出中看到一些乱码(这是使用 nutch 1.0)。后来我安装了一些语言插件并在终端中调整了设置,我可以看到这些字符。所以,我认为#3 不太可能,你必须关注#1 和#2。

于 2012-04-15T11:33:57.263 回答
0

我在想我已经解决了编码问题。请看下面的代码:

co = true;
fe = true;
ge = true;
pa = true;
pd = true;
pt = true;
SegmentReader segmentReader2 = new SegmentReader(crwlNutchCommon.nutch_conf, co, fe, ge, pa, pd, pt);
HashMap<String, List<Writable>> hm = new HashMap<String, List<Writable>>();
segmentReader2.get(path, new Text("some_url"), 

new OutputStreamWriter(new FileOutputStream("somefile1"), "UTF-8"),hm);

文件 somefile1 可能有错误的编码,但更进一步:

FileOutputStream fos; 
DataOutputStream dos;
File file= new File("somefile2");
fos = new FileOutputStream(file);
dos=new DataOutputStream(fos);
hm.get("co").get(0).write(dos); // look

这行得通!somefile2 将是“原始的”,没有任何编码修改,但在开头和结尾有一些额外的数据 - 我认为可以解析它们分析“Content.java”源文件。

于 2012-05-14T06:06:57.427 回答
0

跟着你,我决定修改 Fetcher 类并添加支持将内容直接保存到 mysql 数据库。它工作得更好更快。

于 2012-05-15T10:41:20.443 回答