nutch修改parse-html爬博客的标题

原创
2015/04/29 10:12
阅读数 103

修改parse-html的HtmlParser类的getParse方法

utils.getText(sb, root); // extract text
      if(TextExtract.filterUrl(baseUrl))
      {
       TextExtract te = new TextExtract(baseUrl, page.getContent().array(), "utf-8");
       te.doExtract();
      }
      text = sb.toString();
      sb.setLength(0);

下面就是对博客标题抽取

package org.apache.nutch.parse.html;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.jsoup.Jsoup;
public class TextExtract {
 private String url; 
 private byte[] connent;
 private String encode;
 public TextExtract(String url, byte[] content, String encode) {
  this.url = url;
  this.connent = content;
  this.encode = encode;
 }
 public static boolean filterUrl(String url)
 {
  Pattern pattern = Pattern.compile("^http://my.oschina.net/cjun/blog/[0-9]+$");
  Matcher matcher = pattern.matcher(url);
  boolean b= matcher.matches();
  return b;
 }
 public void doExtract() {
  try {
   Document doc = Jsoup.parse(new String(this.connent, this.encode));
   String title = doc.head().select("title").text();
   try {
    FileWriter fw = new FileWriter("/apps/title.txt", true);
    fw.write(url + "#" + title + "\n");
    fw.close();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}

 修改这2部分,然后运行nutch就可以抓取到博客的标题了。

参考文章:Nutch二次开发之定制爬取网站信息

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部