ブログからの本文抽出:Java vs Python

div タグ + class 属性を利用してブログから本文を抽出するにあたり,JavaPython の実装を比較した.結果は Python の圧倒的勝利.

Java での記述

import java.io.*;
import java.net.URL;
import org.w3c.tidy.Tidy;
import org.w3c.dom.Document;
import javax.xml.xpath.*;

public class sample {
    public static void main(String[] args){
	try {
	    //アメブロ:渋谷で働く社長
	    URL url = new URL("http://ameblo.jp/shibuya/entry-10980874972.html");
	    String expression = "//div[@class='entry']";

	    // Tidy を用いてページを整形式にする.
	    Tidy tidy = new Tidy();
	    tidy.setShowWarnings(false);
	    tidy.setQuiet(true);
	    tidy.setInputEncoding("utf-8"); //要るのかな?
	
	    // Tidy を利用して DOM document を取得
	    Document doc = tidy.parseDOM(url.openStream(), null);

	    // XPath用のファクトリ生成
	    XPathFactory xpf = XPathFactory.newInstance();

	    // XPathオブジェクトの生成
	    XPath xpath = xpf.newXPath();

	    // XPath 表現を評価してブログ本文を得る
	    String article = (String) xpath.evaluate(expression,
						doc,
						XPathConstants.STRING);
	    System.out.print(article);
	} catch(Exception e){
	    e.printStackTrace();
	}
    }
}

Python での記述

>>> import urllib2
>>> from BeautifulSoup import BeautifulSoup
>>> page = urllib2.urlopen("http://ameblo.jp/shibuya/entry-10980874972.html")
>>> soup = BeautifulSoup(page)
>>> article = soup.find('div', {"class":"entry"})
>>> print article