
TwitterのAPIを使用しない、Pythonで書かれた高度なTwitterスクレイピング&OSINTツールです。ユーザーのフォロワー、フォロー中、Tweetsなどをスクレイピングでき、ほとんどのAPI制限を回避できます。

認証不要。API不要。制限なし。
TwintはPythonで書かれた高度なTwitterスクレイピングツールであり、TwitterのAPIを使わずにTwitterプロフィールからツイートをスクレイピングできます。
TwintはTwitterの検索演算子を利用して、特定ユーザーのツイート、特定のトピックやハッシュタグ・トレンドに関連するツイート、またはツイート内のメールアドレスや電話番号などの機密情報を分別して収集できます。これは非常に便利で、創造的な使い方も可能です。
TwintはTwitterに対して特別なクエリを実行することで、認証、API、Selenium、ブラウザエミュレーションを一切使わずに、Twitterユーザーのフォロワー、ユーザーがいいねしたツイート、フォローしているユーザーをスクレイピングすることもできます。
Twintを使用する利点(Twitter APIと比較して):
Twitterはユーザータイムラインのスクロールに制限を設けています。そのため、.Profileや.Favoritesを使用すると約3200ツイートまでしか取得できません。
Git:
git clone --depth=1 https://github.com/twintproject/twint.git
cd twint
pip3 install . -r requirements.txt
Pip:
pip3 install twint
または
pip3 install --user --upgrade git+https://github.com/twintproject/twint.git@origin/master#egg=twint
Pipenv:
pipenv install git+https://github.com/twintproject/twint.git#egg=twint
追加: Dockerfile
多くの方がインストールに問題を抱えているのを確認しました(私も含めて)。問題を調査している間は、一時的にDockerfileを使用してください。
基本を理解するための簡単な例をいくつか:
twint -u username - ユーザーのすべてのツイートをスクレイピング(リツイートは含まず、返信は含む)。twint -u username -s pineapple - ユーザーのタイムラインから_pineapple_を含むツイートをすべてスクレイピング。twint -s pineapple - すべてのユーザーのツイートからpineappleを含むツイートを収集。twint -u username --year 2014 - 2014年より前にツイートされたツイートを収集。twint -u username --since "2015-12-20 20:30:15" - 2015-12-20 20:30:15以降にツイートされたツイートを収集。twint -u username --since 2015-12-20 - 2015-12-20 00:00:00以降にツイートされたツイートを収集。twint -u username -o file.txt - ツイートをスクレイピングしてfile.txtに保存。twint -u username -o file.csv --csv - ツイートをスクレイピングしてCSVファイルとして保存。twint -u username --email --phone - 電話番号やメールアドレスが含まれている可能性のあるツイートを表示。twint -s "Donald Trump" --verified - Donald Trumpについてツイートした認証済みユーザーのツイートを表示。コマンドとオプションの詳細はwikiにあります。
Twintはモジュールとして使用でき、カスタムフォーマットもサポートしています。詳細はwikiにあります。
import twint
# 設定
c = twint.Config()
c.Username = "realDonaldTrump"
c.Search = "great"
# 実行
twint.run.Search(c)
出力
955511208597184512 2018-01-22 18:43:19 GMT <now> pineapples are the best fruit
import twint
c = twint.Config()
c.Username = "noneprivacy"
c.Custom["tweet"] = ["id"]
c.Custom["user"] = ["bio"]
c.Limit = 10
c.Store_csv = True
c.Output = "none"
twint.run.Search(c)
TwintでElasticsearchをセットアップする詳細はwikiにあります。

Twintデスクトップアプリを開発中です。

ユーザーのツイートをスクレイピングしようとしたが、存在することはわかっているのに取得できない
Twitterはアカウントをシャドウバンすることがあり、その場合、検索でツイートが利用できなくなります。これを解決するには、CLIでTwintを使用している場合は--profile-fullを渡すか、モジュールとして使用している場合はconfig.Profile_full = Trueを追加してください。この処理はかなり遅くなることに注意してください。
フォロワーのユーザー名/フォロー中のユーザー名のみを取得する場合
twint -u username --followers
twint -u username --following
フォロワー/フォロー中のユーザーのユーザー情報を取得する場合
twint -u username --followers --user-full
twint -u username --following --user-full
ユーザーの情報のみを取得する場合
twint -u username --user-full
ユーザーリストからユーザーの情報を取得する場合
twint --userlist inputlist --user-full
英語のツイート100件を取得し、イタリア語に翻訳する場合
twint -u noneprivacy --csv --output none.csv --lang en --translate --translate-dest it --limit 100
または
import twint
c = twint.Config()
c.Username = "noneprivacy"
c.Limit = 100
c.Store_csv = True
c.Output = "none.csv"
c.Lang = "en"
c.Translate = True
c.TranslateDest = "it"
twint.run.Search(c)
注:
質問がある場合、議論に参加したい場合、追加のヘルプが必要な場合は、OSINT teamにあるTwint専門チャンネルにぜひご参加ください。
twint -g="48.880048,2.385939,1km" -o file.csv --csv - パリの場所から半径1km以内のツイートをスクレイピングしてCSVファイルにエクスポート。twint -u username -es localhost:9200 - ツイートをElasticsearchに出力。twint -u username -o file.json --json - ツイートをスクレイピングしてJSONファイルとして保存。twint -u username --database tweets.db - ツイートをSQLiteデータベースに保存。twint -u username --followers - Twitterユーザーのフォロワーをスクレイピング。twint -u username --following - Twitterユーザーがフォローしているユーザーをスクレイピング。twint -u username --favorites - ユーザーがお気に入りに追加したツイートをすべて収集(約3200ツイート取得)。twint -u username --following --user-full - ユーザーがフォローしている人の完全なユーザー情報を収集。twint -u username --timeline - ユーザープロフィールからツイートを収集する効果的な方法(約3200ツイートを取得、リツイートと返信を含む)。twint -u username --retweets - ユーザープロフィールから直近900ツイート(リツイートを含む)を収集する高速な方法。twint -u username --resume resume_file.txt - 最後に保存されたスクロールIDから検索を再開。