读取nutch爬取内容方法
2017-07-14 10:04
281 查看
读取nutch内容有如下两种方法:
1 通过Nutch api SegmentReader读取。
public Content readSegment(String segPath,String url){
Text key= new Text(url);
Path path= new Path(segPath);
Content content = null;
ArrayList<Writable> parsedLst = null;
Map<String,List<Writable>> results=new HashMap<String, List<Writable>>();
SegmentReader reader= new SegmentReader(configuration,true,true,true,true,true,true);
try {
reader.get(path, key, new StringWriter(), results);
parsedLst=(ArrayList<Writable>) results.get("co");
Iterator<Writable> parseIter=parsedLst.iterator();
while(parseIter.hasNext()){
content=(Content) parseIter.next();
}
} catch (Exception e) {
e.printStackTrace();
}
return content;
}
2 通过SequenceFile 读取
public static void main(String[] args) throws IOException {
args=new String[]{"D:\\nutchv\\nutch12\\apache-nutch-1.2\\data\\csdn2\\segments\\20140904104348"};
Configuration conf = NutchConfiguration.create();
Options opts = new Options();
GenericOptionsParser parser = new GenericOptionsParser(conf, opts, args);
String[] remainingArgs = parser.getRemainingArgs();
FileSystem fs = FileSystem.get(conf);
String segment = remainingArgs[0];
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();
// Loop through sequence files
while (reader.next(key, content)) {
try {
System.out.write(content.getContent(), 0,
content.getContent().length);
} catch (Exception e) {
}
}
}
1 通过Nutch api SegmentReader读取。
public Content readSegment(String segPath,String url){
Text key= new Text(url);
Path path= new Path(segPath);
Content content = null;
ArrayList<Writable> parsedLst = null;
Map<String,List<Writable>> results=new HashMap<String, List<Writable>>();
SegmentReader reader= new SegmentReader(configuration,true,true,true,true,true,true);
try {
reader.get(path, key, new StringWriter(), results);
parsedLst=(ArrayList<Writable>) results.get("co");
Iterator<Writable> parseIter=parsedLst.iterator();
while(parseIter.hasNext()){
content=(Content) parseIter.next();
}
} catch (Exception e) {
e.printStackTrace();
}
return content;
}
2 通过SequenceFile 读取
public static void main(String[] args) throws IOException {
args=new String[]{"D:\\nutchv\\nutch12\\apache-nutch-1.2\\data\\csdn2\\segments\\20140904104348"};
Configuration conf = NutchConfiguration.create();
Options opts = new Options();
GenericOptionsParser parser = new GenericOptionsParser(conf, opts, args);
String[] remainingArgs = parser.getRemainingArgs();
FileSystem fs = FileSystem.get(conf);
String segment = remainingArgs[0];
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();
// Loop through sequence files
while (reader.next(key, content)) {
try {
System.out.write(content.getContent(), 0,
content.getContent().length);
} catch (Exception e) {
}
}
}
相关文章推荐
- 读取nutch爬取内容方法
- J2ME中有没有方法读取SIM卡中的内容?
- 用ODBC方式读取EXCEL时,读取出来的内容无效(#错误)之类的解决方法。
- JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例
- C#读取XML节点内容方法
- 编写一个文件,读取 src 下面day12包 下面的my.properties 文件,文件内容如下, className=day12.User 结合 IO、反射知识,完成 配置文件中对象的创建和方法调用。并编写方法,列举出 Student 类中所有的属性、
- ASP.NET + C#读取ACCESS数据库内容的简单方法
- JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法
- Domino中运用jQuery读取视图内容的方法
- java读文本文件内容---传入path来读取方法
- 从父页面读取和操作iframe中内容方法
- 读取XML文件内容的简单方法
- 读取网页中内容的方法
- 在AJAX.NET中使用FCKEditor不能读取FCKEditor内容的解决方法
- sql 读取txt 文件内容,并写入sql的方法
- 读取TXT文件内容的方法
- sql 读取txt 文件内容,并写入sql的方法
- 读取文件内容到int数组的函数处理方法
- 读取文件内容输出到控制台方法
- C#读取XML节点内容方法实例简析