なぜJavaでウェブスクレイピングか

近年、AI(人工知能)や機械学習といったキーワードが流行しており、最近は、それほどプログラミングスキルが無くても、容易に機械学習を実行できるツールやライブラリが増えてきている。

遊びとして実行するだけなら、サンプルとして頻繁に使われる「アヤメの萼や花弁の長さ・幅データ」を使って品種分類をすればお手軽だ。しかし、金融にせよマーケティングにせよ、「何となくお金になりそうな分野」で機械学習を始めようとすると、「分析データが無い」事に気づく。

勿論、公開・市販されているデータベースを使うというのも一つの手だが、必ずしも欲しい情報がデータベース化されているとも限らないし、モノによっては非常に高価である。

だからこそウェブスクレイピング(似た言葉にウェブクローリングウェブスパイダー)が重要になってくる。幸い、様々なプログラミング言語でのウェブスクレイピングに関する書籍が出ている。筆者が読んでオススメできるものは、『PythonによるWebスクレイピング』や『JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック』である。筆者は未読だが、他の言語なら『Rubyによるクローラー開発技法』や『Rによるスクレイピング入門』が比較的新しい。

しかし、調べた限りではJavaでのスクレイピングを扱った日本語書籍は無い。(ある場合は教えて頂きたい。)需要が無いから無いのかもしれないが、私はそうは思わない。何故なら、私自身が何でもJavaで済ませたがる傾向があり、Javaの普及度や多くの開発者が持つJavaのコード資産を考えても、一定の需要があると考えられるからである。

そこで何回かに渡り、jsoupというオープンソースライブラリを使い、Javaでウェブスクレイピングを、より実践的な形で行う方法を紹介していきたいと思う。統合開発環境は何でも良いが、本シリーズではEclipseを使用する事を念頭に置いている。また、ウェブスクレイピングをする過程で、ブラウザで表示とHTMLをにらめっこする必要があるが、その上でGoogle Chromeは便利である。

なお、ウェブスクレイピングは、やり方によっては相手方のサーバーに負荷を掛ける事になり、場合によっては岡崎市立中央図書館事件のように法的措置を取られる事もある。そうでなくても先にアクセスを拒絶されるかもしれない。ウェブスクレイピングを行う場合は、相手のサイトの規模を考慮し、規約などをよく読んで、必ず自己責任で行ってもらいたい。いかなる損害があったとしても当方は一切責任を負わない

jsoupを使用する為の環境構築

  1. JDKは1.5以上が必要*1
  2. jsoupのダウンロード*2
    https://jsoup.org/ に行き、メニューのDownloadに遷移し、jsoup-×.×.×.jarという型式のファイルをダウンロードする。(執筆時点2017年3月24日現在はバージョン1.10.2)同時にjavadocとsourcesもダウンロードしておくと便利だろう。
  3. Eclipseで任意のプロジェクトを作る
  4. プロジェクトを右クリック >> ビルド・パス >> ビルド・パスの構成
  5. ダウンロードしたjsoup-×.×.×.jarを指定
  6. 一覧に指定したjarファイルが表示されるので、V字のアイコンをクリックし、ソース添付・Javadocロケーションの部分を編集してソースとjavadocのパスを指定する
  7. 適用 >> OK

次回から、具体的なjsoupの使い方を紹介していく。

*1:データベースに保存していくなら、try-with-resources構文が使えるJDK7以上、機械学習もJavaで行うつもりなら、Streamが使えるJDK8以上が良い。

*2:MavenやGradleも使えるが、jsoupに限ってはビルドパスにjarを通すだけなので簡単である。