读取Nutch抓取文件中的Segments中Parse_Text的内容
来源:互联网 发布:女装淘宝店铺特别名字 编辑:程序博客网 时间:2024/05/22 17:30
有时侯非常需要想知道nutch抓取网页后对html解析情况,最常用的是在终端使用dump或者readseg命令,但是这样做的话也很是不方便。在nutch中org.apache.nutch.searcher包中NutchBean类中main找到了一点头绪,main方法中的代码如下:
public static void main(String[] args) throws Exception { final String usage = "NutchBean query [<searcher.dir>]"; if (args.length == 0) { System.err.println(usage); System.exit(-1); } // String[] str={"中国","/home/hadoop/output"}; // args=str; final Configuration conf = NutchConfiguration.create(); if (args.length > 1) { conf.set("searcher.dir", args[1]); } final NutchBean bean = new NutchBean(conf); try { final Query query = Query.parse(args[0], conf); query.getParams().setMaxHitsPerDup(0); final Hits hits = bean.search(query); System.out.println("Total hits: " + hits.getTotal()); final int length = (int)Math.min(hits.getLength(), 10); final Hit[] show = hits.getHits(0, length); final HitDetails[] details = bean.getDetails(show); final Summary[] summaries = bean.getSummary(details, query); for (int i = 0; i < hits.getLength(); i++) { System.out.println(" " + i + " " + details[i] + "\n" + summaries[i]); } } catch (Throwable t) { LOG.error("Exception occured while executing search: " + t, t); System.exit(1); } System.exit(0); }这段代代码需要查传入两个参数:查询项和索引的路径,输出结果是显示查询结果的摘要。
说一下这里的HitDetails类,里面主要有 private String[] fields; private String[] values;两个成员变量,两个数组的长度相同,fields中存储变量,values中存储的是变量对应的值,功能类似hashmap的键值对,这里的details存储的有segmnet名称(以时间命名的文件夹),以及想找的那个文档的url,用来定位网页位置。将上面的代码稍加 修改就勉强的可以遍历segment中的parse_text
public static void main(String[] args) throws IOException{FileOutputStream fos=null; final NutchBean bean = new NutchBean(conf);FSDirectory dir=FSDirectory.open(new File("/home/hadoop/output/index"));IndexSearcher searcher=new IndexSearcher(dir);int num=searcher.maxDoc();int count=1;for(int i=0;i<num;i++){Hit h=new Hit(0,i+"");HitDetails details=bean.getDetails(h);ParseText text=bean.getParseText(details);String temp=details.toString();temp=temp.substring(temp.indexOf("/")+1);File file=new File("/home/hadoop/temp/output/"+count++);//只是一个输出文件if(!file.exists()) file.createNewFile();fos=new FileOutputStream(file);fos.write((temp+"\r\n"+text.getText()+"\r\n").getBytes());}fos.close();System.out.println("Done"+count+" "+num);return;}上面的Hit类的构造方法中的两个参数为int 类型的indexNo和String UniqeKey,indexNo这个值目前还不知道有什么用,可能我建的索引的量还没有达到使它的值变为1,第二个参数是文档号,一般从0开始往上数。通过构造Hit来得到HitDetails,这样就可以通过NutchBean取得segment中的值;
- 读取Nutch抓取文件中的Segments中Parse_Text的内容
- [Nutch]Nutch抓取过程中生成的目录内容分析
- mahout读取nutch抓取数据后的文件
- Nutch 查看抓取的文件
- Nutch抓取数据内容的详解
- Nutch抓取数据内容的详解
- eclipse中读取nutch爬取的数据内容
- 读取Nutch爬取的网页内容
- 读取nutch爬取的数据内容
- 【Nutch】Nutch的抓取流程
- 读取文件中的内容
- IOS中plist文件内容的读取
- Nutch 学习笔记2 - 查看抓取的文件
- 读取 抓取 网页内容
- NSString读取文件中内容与 NSString的内容切分
- C++读取文件中的内容
- Java读取文件中的内容
- shell读取文件中的内容
- 2011年薪超百万职业(组图)
- JavaScript 中 window.setTimeout() 的详细用法
- HDU 1176 免费馅饼
- Bash游戏
- ScrollView 实现下拉刷新(二)
- 读取Nutch抓取文件中的Segments中Parse_Text的内容
- Codeforces Beta Round #70 (Div. 2)——A,B,C
- android111--looper
- 学习日记-观察者模式
- C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
- HTMLParser的两种使用方法
- HEVC-Tool list
- windows阻塞队列
- jQuery的插件机制