Apitore blog

Apitoreを運営していた元起業家のブログ

現在から過去のツイートをマイニングするシンプルなクローラーを作った

はじめに

極性判定APIを作ろうと思って、Twitterのクローラーを作りました。過去にDBやcrontabを駆使したとてもスマートなクローラーを作ったのですが、DBを使うために導入の敷居が少し高いです。今回はSpring-bootを使ってそこそこスマートかつJavaのみで実行できるクローラーを作りましたのでご紹介します。githubでも公開しています。 amarec (20161010-134526)

Requirement

  • Java 8
  • Maven 3.0
  • Twitter auth
    • application.propertiesに書き込んで下さい。

Specification

Spring bootのスケジューラを使っているので、起動してから5秒ほどでクローリングを開始します。ツイッターのAPI制限(15分に180回)にかからないようにクローリングをしますし、もし制限にかかったとしても自動的にスリープを入れて、制限が解除されたら続きからクローリングを再開するようになっています。また、検索キーワードにツイートが一個も引っかからない場合は自動的にクローリング対象から当該キーワードを外し、API利用回数の浪費を抑えるようにしています。 クローリングしたツイートは多少加工しています。以下はデフォルトの設定で、ソースコードを弄れば設定を変えられます。

  • \r,\n,\t,\s は半角スペースに変換(連続する場合は半角スペース一文字に)
  • RTは対象外
  • 日本語ツイートに限定
  • httpを含むツイートは対象外
  • usernameにキーワードを含む場合は対象外

Input

  • searchlist.txt
    • 検索キーワードを改行区切りで羅列
    • 「//」で始まる行はスキップ

Output

  • 「data」フォルダにタブ区切りテキスト
    • status id
    • キーワード
    • ツイート

Github

springboot-twitter-crawler