前回は、jsoupでのダイレクトの方法について説明した。ここまでで、Yahoo!ニュースのRSSフィードから個別記事のページにまで到達しているはずだ。最後に、記事の内容でよく抽出されそうな場所の抽出例を紹介しておこう。

記事を形態素解析したり、TF_IDFを計算したり、色々とするには、まず何よりも記事本文が必要である。どの記事もynDetailTextというクラスに所属しているので、それをcssセレクターで指定してやれば良い。これにはタグが残っているので、text()メソッドでタグを除去してやれば記事本文の抽出完了である。最初のスペースが不要であれば、text()の後にtrim()を呼び出せば良いし、段落毎に文を区切るのであれば、text()を呼び出す前に要素をString化し、split(“<br>”)で分割してやれば良い。

また、太文字になっている小見出しはynDetailHeadingクラスとなっているので、必要であれば抽出すれば良いだろう。タグがついていない小見出しとして多いのは”■”(黒四角)の記号である。

関連記事のURLリストが欲しい人もいるかもしれない。その場合は、以下のようにすれば良い。なお、以下のコードで取得されるURLはリダイレクトするので、その処理は忘れてはならない。

掲載元メディア名は、RSSの<title>タグは、

となっているので、別に取得する必要性は無いが、掲載元メディアのURLは知りたい場合があるだろう。その場合は、以下のようにすれば良い。今までに使ったメソッドのおさらいになるが、覚えているだろうか。

また、yahooニュースの記事URLにも情報が多い(jsoupの内容とは離れるが。)末尾は”dzai-bus_all”のような感じになっており、ハイフンの前が「メディア名のシンボル」、ハイフンの後が「サブカテゴリー」なので、ニュースの分析・分類において非常に重要な情報と言える。

次回は、スクレイピングにおいて、他に必要な情報(ProxyやTimer等)について説明しよう。