【Twitterスクレイピング】twintの代わりにstweetをインストール

【Twitterスクレイピング】twintの代わりにstweetをインストール プログラミング

「twintがエラーで動かない」
「Twitterをスクレイピングしたい」
「TwitterのAPIが制限だらけで使えない」

このような場合には、stweetをおススメします。
この記事では、stweetについて解説しています。

本記事の内容

  • stweetとは?
  • stweetのシステム要件
  • stweetのインストール
  • stweetの動作確認

それでは、上記に沿って解説していきます。

stweetとは?

stweetは、Twitterの非公式APIを利用したPythonライブラリです。
stweetを用いれば、ツイートやユーザー情報を素早く取得できます。

具体的には、次のことが可能です。

  • 検索キーワードからツイートの取得
  • ツイートIDからツイートの取得
  • ユーザー名からユーザー情報の取得

stweetの最大の特徴は、非公式APIを利用していることです。
もちろん、Twitterには公式のAPIが用意されています。

しかし、Twitterの公式APIは正直使い物になりません。
そのため、過去にスクレイピングのコードを何度か書いてきました。

これらの記事の中でも、TwitterのAPIが使えないと主張しています。
ただ、stweetはこのスクレイピングとも少し異なります。

stweetは、非公式のAPIを利用しているのです。
非公式のAPIが存在する理由は、いろいろあるでしょう。

ここでは、その部分を追求しません。
ただ、非公式APIを利用していることを理解しておきましょう。

つまり、stweetが利用できなくなる可能性が常にあるということです。
非公式なモノはいつ使えなくなっても仕方がないと言えます。
このことを認識して、stweetを利用しましょう。

同じように非公式APIを利用するライブラリとして、twintが存在しています。
正確には、存在していたですね。

2020年4月29日に2.1.20をリリースして以降は、twintは更新されていません。
そして、そのバージョンをインストールしても、エラーが出て利用できません。

調べてみると、twintには有料のサービスが存在しています。
そちらの邪魔になるから、もう開発は止めたのでしょうかね?

オープンソースとして平行して有料サービスを展開する場合、こんな状況をよく見かけます。
自分のところの商売の邪魔になってくるのかもしれません。
推測は、この辺でやめておきましょう。

そもそも、twintの利用者であった開発者が自らstweetを開発したようです。
twintを改良して、使いやすくしたという内容が公式に記載されています。

以上、stweetについて説明しました。
次は、stweetのシステム要件を確認します。

stweetのシステム要件

現時点(2021年11月)でのstweetの最新バージョンは、2.0.0となります。
この最新バージョンは、2021年10月14日にリリースされています。

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

また、サポート対象となるPythonのバージョンは以下となります。

  • Python 3.8
  • Python 3.9
  • Python 3.10

上記の表記がありますが、Python 3.7は大丈夫なはずです。
setup.pyを確認すると、次のように記述されています。

なお、以下はPython公式開発サイクルです。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

Python 3.7以降ということは、Python公式開発サイクルに準じていると言えます。
Python 3.6のサポートは、もう2021年末で打ち切りとなりますからね。

ここで、stweetのシステム要件をまとめておきます。
stweetのシステム要件は、Python 3.7以降に注意すれば問題ありません。

以上、stweetのシステム要件について説明しました。
次は、stweetをインストールします。

stweetのインストール

検証は、次のバージョンのPythonで行います。

>python -V     
Python 3.9.7

まずは、現状のインストール済みパッケージを確認しておきます。

>pip list 
Package    Version 
---------- ------- 
pip        21.3.1 
setuptools 58.5.3

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、stweetのインストールです。
stweetのインストールは、以下のコマンドとなります。

pip install stweet

インストールは、少しだけ待たされます。
では、どんなパッケージがインストールされたのかを確認しましょう。

>pip list 
Package            Version 
------------------ --------- 
arrow              1.2.1 
certifi            2021.10.8 
charset-normalizer 2.0.7 
idna               3.3 
numpy              1.21.4 
pandas             1.3.4 
pip                21.3.1 
python-dateutil    2.8.2 
pytz               2021.3 
requests           2.26.0 
setuptools         58.5.3 
six                1.16.0 
stweet             2.0.0 
tor-python-easy    0.1.2 
urllib3            1.26.7

そこそこ多くのパッケージが、インストールされました。
numpyやpandasもあるので、既存環境に影響を及ぼしかねません。

よって、stweetのインストールはPythonの仮想環境で行うのが無難でしょう。

Windowsなら、IDEにPyCharmを使えば簡単に仮想環境を利用できます。
プロジェクト(今回ならstweet専用)毎に仮想環境となります。

また、次の記事にあるようにコマンドだけで簡単に仮想環境が利用できます。
GUIのない Linuxサーバーなら、こちらが一般的と言えます。

以上、stweetのインストールを説明しました。
次は、stweetの動作確認を行います。

stweetの動作確認

公式にあるサンプルから、一つ拝借します。
ユーザー名を指定して、ユーザーの情報を抽出するコードです。

import stweet as st


def try_user_scrap():
    user_task = st.GetUsersTask(['shinjo_freedom'])
    output_json = st.JsonLineFileRawOutput('output_raw_user.jl')
    output_print = st.PrintRawOutput()
    st.GetUsersRunner(get_user_task=user_task, raw_data_outputs=[output_print, output_json]).run()


if __name__ == '__main__':
    try_user_scrap()

現時点(2021年11月)で話題を独占しているビッグボスこと新庄剛志氏のアカウントを対象にします。
「shinjo_freedom」が、新庄ビッグボスのscreen_nameとなります。

このscreen_nameを次のように指定します。

GetUsersTask(['shinjo_freedom'])

ユーザーを指定したら、コードを実行。
実行すると、同じディレクトリ上に「output_raw_user.jl」という名前のファイルが作成されます。

出力形式は、JsonLineFileRawOutputというメソッドのままです。
各行がJSON形式の改行区切りというモノです。

1行だけなら、ファイルをそのままJSONとして扱うことができます。
しかし、複数行の場合は、ファイルをJSONとしては扱えません。

この部分は、要注意です。
今回は、1行のためそのままJSONとして扱うことができます。

そのJSONを確認する前に、現状の新庄ビッグボスのアカウント画面を確認しておきます。

以下は、JSONの一部です。

ツイート数67、フォロワー数269601を確認できます。
フォロワー数が、スゴイ勢いで増えています。

2022年のプロ野球シーズンが始まる頃までには、100万を超えているのでしょうかね?
定点観測もstweetを使えば、可能になります。

日次でこの情報を取得してDBに保存するだけです。
気になるアカウントがあれば、観測するのも面白いかもしれません。

以上、stweetの動作確認を説明しました。

タイトルとURLをコピーしました