twint
TwitterのAPI申通過しなくてもツイート収集できる
APIを使った場合に生じる上限制限がなくなる
API使うと
15分間に900回しか特定のユーザーのタイムライン取得できない
24時間に100,000回しか特定のユーザーのタイムライン取得できない
API使うと
15分間に180回しかキーワード検索できない
やりたいことはだいたいできる
キーワード検索
リツイートを除外する
リンクを含むツイートだけ検索する
投稿したクライアント名を指定して検索する
公式クライアントのAndroid,iOS,Web,TweetDeckからのツイートだけを対象に検索する
→iftttとかで自動投稿してるゴミツイートを除外できる
特定のユーザーを指定して
タイムライン収集
いいね収集
フォロー収集
フォロワー収集
悪用厳禁
備考
Twitter自体の制約で限界がある
キーワード検索は頑張っても7日間前までしか取得できない
キーワード検索はTwitterが勝手に間引いてるので完全ではない
特定のユーザーのタイムラインは3200件までしか取得できない
フォロー・フォロワーの取得にも限界がある
概ね期待通り動くけど普通にバグってる所がある
tweet.retweet_dateがtweet.datetime とおなじになってた
tweet.reply_toに全ツイートが自分宛てのリプライですというデータが入っちゃってる
は?
修正中……
userlistが20行以上だとエラーで終了する
なぜ……
修正中……
というかTwitterが少しでも仕様変更するとバグってしまう
バグに遭遇したらがんばってpythonのコードを読んで修正して、積極的にPull Requestを送りましょう
意外とシンプルなコードになってるから修正そんなに難しくない
ちゃんとメンテナンスされてるので適切な修正ならすぐ取り込んでくれる
必要なものをインストール
Python3
macOSでhomebrewがある場合
code:bash
brew install python3
Java(jdk)
macOSでhomebrewがある場合
code:bash
brew cask install adoptopenjdk8
Elasticsearch
macOSでhomebrewがある場合
code:bash
brew tap elastic/tap
brew install elastic/tap/elasticsearch-full
elasticsearch
↑ localhost:9200 で elasticsearch が起動する
Kibana
macOSでhomebrewがある場合
code:bash
brew tap elastic/tap
brew install elastic/tap/kibana-full
kibana
↑ localhost:5601 で kibana が起動する
twint
pip3 install twint
以下の作業は必ずElasticsearchを起動した状態で行う
特定のユーザーのツイートを収集する
twint -es localhost:9200 -u yuiseki
特定のユーザーのフォローを収集する
twint -es localhost:9200 -u yuiseki --following
特定のユーザーのフォロワーを収集する
twint -es localhost:9200 -u yuiseki --followers
特定のユーザーのいいねを収集する
twint -es localhost:9200 -u yuiseki --favorites
以下の作業は必ずKibanaを起動した状態で行う
収集したデータを分析する
でKibanaが開ける
やりかた
Kibanaをすごいがんばっていじっているとできる
なんにせよまず最初に twinttweets の Index Patterns を追加する必要がある
https://gyazo.com/c8c3cba779bae7113838212a7fe5c553
https://gyazo.com/c86f45260220fefbdd531778347aad8e
https://gyazo.com/16584a6e4ced133056e3421ed91325f6
あとは適当にいじる
できることA
ユーザーごとのフォロワー数の可視化
https://gyazo.com/b5e8ba216f57fd9b9bd286de19be78eb
ユーザーごとのフォロー数の可視化
https://gyazo.com/c91bd159e6c8317136d123c5928699fe
ユーザーごとのツイート数の可視化
https://gyazo.com/9008a5a66aaa11f43e667f949b16741c
できることB( @yuiseki のツイートデータを可視化した例 )
最近一年間のツイート数を可視化
https://gyazo.com/81c874463cb793ead2538adb03ba31ba
最近一年間のツイートしてる時間帯の可視化
https://gyazo.com/ceee4a1fef53262f6dfe1a18d934cb6d
最近一年間のツイートしてる曜日の可視化
https://gyazo.com/ff4f9a7a6eb724b5141f2961a48863cd
最近一年間の頻繁にツイートしてるハッシュタグの可視化
https://gyazo.com/980a8c39eeafaac543394ede081392de
最近一年間の頻繁にリプライしている相手の可視化
https://gyazo.com/16f8b2007bc2ee79e27734b1e4ead764
試行錯誤中……
よく言及している単語の可視化
よくRTしているユーザーの可視化
よくRTされているユーザーの可視化
位置情報の可視化
ユーザー間のネットワーク関係の視覚化