前回は、ウェブスクレイピングをする時に重要なプロキシをjsoupで使用する方法を説明した。高速にデータを収集していく上でプロキシは重要だが、各々のリクエストにおいて、「リクエストの間隔」を考慮する事はスクレイピングにおいて必須だ。

具体的に何秒開ければ良いかというのは、当方は何の責任も負えないが、岡崎市立中央図書館事件(Librahack事件)の時は、1秒に1回程度のアクセスは「常識的」な範囲とされたようだ。とは言え、それより長いアクセスでも怒られる事もあるので、各々自己責任で判断すべき事だ。

リクエスト間隔(インターバル)を調整することは決して難しくなく、以下のように、ドキュメントの取得前と取得後の時間を取得し、その経過時間が設定したインターバルより短ければ、その分待機してから次のループに進むという処理を書くだけで良い。

より自然な形にするなら、以下のように毎回、擬似乱数を追加して間隔にブレを生じさせるという方法も考えられる。(この場合、0~299の整数をランダムで付加するので、intervalを2000ミリ秒にしている場合、2000~2299の値を取り得る事になる。)

 

今回で、「Java&jsoupでウェブスクレイピング」のシリーズは一旦終了となる。また、細かい要素について紹介する可能性はあるが、これまでの内容で、多くのサイトからのウェブスクレイピングが可能になると思う。

細かい要素については、jsoup公式サイトを参照されたい。英語ではあるが、詳細はjavadocに書かれているし、基本的な使い方はcookbookで紹介されている。cssセレクターを試すだけならTry jsoupも便利なので、使ってみると良いだろう。