はじめに
極性判定APIを作ろうと思って、Twitterのクローラーを作りました。過去にDBやcrontabを駆使したとてもスマートなクローラーを作ったのですが、DBを使うために導入の敷居が少し高いです。今回はSpring-bootを使ってそこそこスマートかつJavaのみで実行できるクローラーを作りましたのでご紹介します。githubでも公開しています。
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
- キーワード
- ツイート