感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Java Jsoupを使ってWebスクレイピング。Yahooの急上昇ワードを取得してみる。

<スポンサーリンク>

最近はRubyのクローラ本が流行っているのですが、ちょっと手軽にJavaでもスクレイピングしてみます。

Yahooにはよく検索されているワードを表示する「Yahoo検索データ」というページがあります。
http://searchranking.yahoo.co.jp/rt_burst_ranking/

そのページから、もっとも検索されている「ランキング1位」のものを取得してみます。
使うのは、Jsoupというライブラリです。

Maven(pom.xml)

<dependency>
	<groupId>org.jsoup</groupId>
	<artifactId>jsoup</artifactId>
	<version>1.7.2</version>
</dependency>

コードの例:

public String getMostTrendWord() {
	String trendWord = null;
	try {
		Document doc = Jsoup.connect(hottrendUrl).get();
		Elements rankingLists = doc.select(".rankingGold").parents();
		Element goldList = rankingLists.first();

		Element goldAtag = goldList.child(1);
		trendWord = goldAtag.text();

	} catch (IOException e) {

		e.printStackTrace();
	}
	return trendWord;
}

JUnitでテストメソッドを実行してみる。

@Test
public void ゴールドトレンドワードを取得する() {
	YahooTrendAnalyzor yahoo = new YahooTrendAnalyzor();
	yahoo.setHottrendUrl("http://searchranking.yahoo.co.jp/rt_burst_ranking/");
	String trendWord = yahoo.getMostTrendWord();
	System.out.println(trendWord);
}

すると、今日のトレンドワード「ベンテンウオ」が取れました。


次に、ランキングを指定してワードを取得してみましょう。
まずはテストメソッドから。

@Test
public void 指定したランキングのワードを取得する() {
	YahooTrendAnalyzor yahoo = new YahooTrendAnalyzor();
	yahoo.setHottrendUrl("http://searchranking.yahoo.co.jp/rt_burst_ranking/");
	String trendWord = yahoo.getTrendWord("10");
	System.out.println(trendWord);
}

実行して「珈琲天国」が取れればOK。日々変動するのでアサーションはしてません。
メソッドはこちら。

public String getTrendWord(String ranking) {
	String trendWord = null;
	try {
		Document doc = Jsoup.connect(hottrendUrl).get();
		Elements rankingLists = doc.select(".patA").select("li");
		Iterator<Element> ite = rankingLists.iterator();
		while (ite.hasNext()) {
			Element ele = ite.next();
			Element span = ele.child(0);
			String tmpRank = span.text();
			if (ranking.contains(tmpRank)) {
				Element a = ele.child(1);
				trendWord = a.text();
			}
		}


	} catch (IOException e) {

		e.printStackTrace();
	}
	return trendWord;
}

実行すると、実際に珈琲天国というワードを取得することができました

JUnit速効レシピ

JUnit速効レシピ