環境
Ubuntu 18.04.2 LTS (Bionic Beaver)
Python 3.6.9
概要
自分じゃない人のツイートを一括で入手できんかな、と思うことは良くあるが、
デベロッパー登録が面倒でいつもやらずにいた。
(英文で「こんなことに使いたい」と書く必要があり、他の設問?もけっこう多い。レスポンスも数日単位)
どうやら登録せずにツイートを取得する方法があるようなので、試してみた。
Python3が使えれば、1行コマンドでインストールできる。
TWINTのプロジェクト GitHub
tl; dr (結論)
TWINTは、取得できるツイート数が少なくても良い場合は手軽な手段だが、ちゃんとした用途には使えない。
参考URL
注意点
参考URLによれば、正常にインストールされれば「twint」で実行できるということだったが、
# twint
Command 'twint' not found, did you mean:
(略)
見つからない、と言われてしまった。
findで見つけてフルパスで使用した。
# /root/.local/bin/twint -u [user_name] -o output.csv --csv
実行結果
出力フォーマットは以下のような感じ。
1507544121606xxxxxx 2022-03-26 11:25:02 +0900 <[user_name]> [tweet contents]
1507541604466xxxxxx 2022-03-26 11:15:01 +0900 <[user_name]> [tweet contents]
1507539094020xxxxxx 2022-03-26 11:05:03 +0900 <[user_name]> [tweet contents]
x は伏せ字(数字)。
csvを指定しているはずですが、カンマはなく、空白区切りのようです。
個人的にはAPIを使用した場合の現在の上限である3,200件の取得を期待したのですが……
アカウント1 …… 260件
アカウント2 …… 20件
アカウント3 …… 112件
という感じで、件数は不定で、かなり少ないようです。ツイート内容の長さや、期間などに関係なく、
[!] No more data! Scraping will stop now.
found 0 deleted tweets in this search.
という表示で終了します。
「No more data!」とありますがツイート自体は、どのアカウントもツイート数は1000以上はあります。
「found 0 deleted tweets」と出力がありますが、削除ツイートがあるアカウントでも0と表示されるので、実際に削除ツイートを反映している訳でもないようです。
感想
登録不要ですぐ使えるのは良いが、取れる件数が少なく、さらに不定数なので、ちゃんとツイートを取得したい場合には面倒でもデベロッパー登録をするか、Selenium系の取得を使う必要があるようです。
ネクスト・コナンズ・ヒント!
stweet というのが良いらしい、というヒントを得た。
ネクスト・参考URL!
【Twitterスクレイピング】twintの代わりにstweetをインストール
ネクスト・結末!
stweet、プロフィールは取れるけど、ツイートはほとんど取れず、使えませんでした!