Stweet日本語ドキュメント

Twitterの非公式APIから、ツイートやユーザーを高速に切り抜きするためのPythonライブラリです。

このツールは、検索フレーズによるツイート、IDによるツイート、ユーザー名によるユーザーを切り取ること支援します。TwitterのAPIを使用していますが、Webサイトでも同じAPIが使用されます。

ライブラリーの主な利点

  • シンプルなコード – ユーザがライブラリに貢献可能。
  • ドメインオブジェクトとインターフェース – 機能の主要部分は置き換えることができる(例:Webリクエストの呼び出し)、ライブラリは基本的なシンプルなソリューションを持っている。
    拡張したい場合、フォークすることも可能。
  • 統合テストによる100%のカバレッジ – この利点は、APIの変更を見つけることができ、テストは毎週実施され、タスクが失敗したときに、簡単に変更のソースを見つけることができる。
  • カスタムツイートとユーザー出力 – ツイートやユーザーのカスタムフォーマットを保存することが可能。

インストール

pip install -U stweet

基本的な使い方

簡単な依頼をするためには、切り取り・タスクが準備する必要がある。次のタスクはRunnerで処理。

import stweet as st

search_tweets_task = st.SearchTweetsTask(
    all_words='#covid19'
)
tweets_collector = st.CollectorTweetOutput()

st.TweetSearchRunner(
    search_tweets_task=search_tweets_task,
    tweet_outputs=[tweets_collector, st.CsvTweetOutput('output_file.csv')]
).run()

tweets = tweets_collector.get_scrapped_tweets()

このコードでは、ハッシュタグ #covid19 を持つすべてのツイートを呼び出しています。その結果、tweetsオブジェクトに切り取りされたツイートのリストが格納されます。

上記の例は、検索フレーズでツイートを切り取りする方法を示しています。Stweetでは、ツイートIDでスクラップすることもできます。

以下がその例です。

import stweet as st

tweets_by_ids_task = st.TweetsByIdsTask(['1336002732717727752', '1338916735479496704'])
tweets_collector = st.CollectorTweetOutput()

st.TweetsByIdsRunner(
    tweets_by_ids_task=tweets_by_ids_task,
    tweet_outputs=[tweets_collector, st.CsvTweetOutput('output_file.csv')]
).run()

tweets = tweets_collector.get_scrapped_tweets()

Stweetは、ユーザーのスクリーンネームでユーザー情報を切り取りすることができます。

import stweet as st

get_users_task = st.GetUsersTask(['donaldtuskEPP', 'JoeBiden', 'realDonaldTrump'])
users_collector = st.CollectorUserOutput()

st.GetUsersRunner(
    get_user_task=get_users_task,
    user_outputs=[users_collector]
).run()

users = users_collector.get_scrapped_users()

Stweetでは、リクエストライブラリであるst.RequestsWebClientをベースにしたデフォルトのWebClientを実装しています。クラスはすべてのプロパティをデフォルト値で持っているが、それらを変更することで、ユーザーはプロキシを設定したり、ssl検証を無効にしたりすることができます。

このスニペットでは、その使い方を紹介しています。

import stweet as st

search_tweets_task = st.SearchTweetsTask(
    all_words='#covid19',
)
tweets_collector = st.CollectorTweetOutput()

proxies_config = st.RequestsWebClientProxyConfig(
    http_proxy="<Your http proxy URL>",
    https_proxy="<Your https proxy URL>"
)

st.TweetSearchRunner(
    search_tweets_task=search_tweets_task,
    tweet_outputs=[tweets_collector, st.CsvTweetOutput('output_file.csv')],
    web_client=st.RequestsWebClient(proxy=proxies_config, verify=False),
).run()

tweets = tweets_collector.get_scrapped_tweets()

本ライブラリの重要な詳細とクラスはすべて以下のとおりです。

SearchTweetsTaskクラス

このクラスは、ツイートをスクラップするタスクを表します。以下のプロパティを含む。

PropertyTypeDescription
all_wordsOptional[str]プロパティにすべての単語を含むツイートを検索
exact_wordsOptional[str]プロパティの語順が変わっていないツイートを検索する
any_wordOptional[str]このプロパティに含まれる任意の単語を含むツイートを検索します。
from_usernameOptional[str]そのユーザーのつぶやきを検索
to_usernameOptional[str]ユーザーへのツイート検索(ユーザーへの言及からツイートが始まる)
sinceOptional[Arrow]時刻以降のつぶやきを検索
untilOptional[Arrow]時間までのつぶやきを検索
languageOptional[st.Language]言語によるツイート検索
tweets_countOptional[int]検索最初のツイート_ツイート数
replies_filterOptional[st.RepliesFilter]返信・原文ありのツイートのフィルタリング

すべてのプロパティはTwitterの詳細検索から取得したもので、デフォルトでは「なし」となっています。

SearchRunnerクラス

SearchRunnerクラスは、SearchTweetsTaskで指定されたツイートをスクラップすることができるライブラリです。ランナーには以下のプロパティがあります。

PropertyTypeDefault valueDescription
search_run_contextst.SearchRunContextNone, in __init__() assign SearchRunContext()検索コンテキスト、Twitterへの次のリクエストを行うための重要なすべてのプロパティを含む
search_tweets_taskst.SearchTweetsTaskObligatory propertyRunnerでダウンロードするツイートを指定するプロパティ。
tweet_outputsList[st.TweetOutput]Obligatory propertyダウンロードしたツイートをエクスポートするオブジェクトのリスト
web_clientst.WebClientstweet.http_request.WebClientRequests()WebClient の実装。カスタムの実装に置き換えることができる。
tweet_parserst.TweetParserstweet.parse.TwintBasedTweetParser()Web APIレスポンスからのツイートの構文解析。
auth_token_provider_factoryst.auth.AuthTokenProviderFactoryst.auth.SimpleAuthTokenProviderFactory()認証トークンを提供する AuthTokenProvider のファクトリ

TweetsByIdsTaskクラス

ツイートをIDでスクラップするタスクを表すクラスで、シンプルなプロパティを持ちます。

PropertyTypeDescription
tweet_idsList[str]Tweet IDのつぶやきを切り取る

TweetsByIdsRunnerクラス

TweetByIdsRunnerクラスは、TweetByIdsTaskで指定されたツイートをスクラップすることができるライブラリです。ランナーには以下のプロパティがあります。

PropertyTypeDefault valueDescription
tweets_by_ids_taskst.TweetsByIdsTaskObligatory propertyRunnerでダウンロードするツイートを指定するプロパティ。
tweet_outputsList[st.TweetOutput]Obligatory propertyダウンロードしたツイートをエクスポートするオブジェクトのリスト。
search_run_contextst.SearchRunContextNone, in __init__() assign SearchRunContext()検索コンテキスト、Twitterへの次のリクエストを行うための重要なすべてのプロパティを含む。
web_clientst.WebClientstweet.http_request.WebClientRequests()WebClient の実装。カスタムの実装に置き換えることができる。
tweet_parserst.TweetParserstweet.parse.TwintBasedTweetParser()Web APIレスポンスからのツイートの構文解析。
auth_token_provider_factoryst.auth.AuthTokenProviderFactoryst.auth.SimpleAuthTokenProviderFactory()認証トークンを提供する AuthTokenProvider のファクトリ

GetUsersTaskクラス

スクラップユーザーに対するタスクを表すクラスで、シンプルなプロパティを持っています。

PropertyTypeDescription
usernamesList[str]スクラップするユーザのユーザ名。ユーザ名は通常 Twitter では ‘@’ 接頭辞付きで使用されます。

GetUsersRunnerクラス

GetUsersRunner クラスを使用すると、GetUsersTask で指定されたユーザーをスクラップすることができます。ランナーには以下のプロパティがあります。

PropertyTypeDefault valueDescription
get_user_taskst.GetUsersTaskObligatory propertyプロパティは、Runnerによってダウンロードされるべきユーザーを指定する
user_outputsList[st.UserOutput]Obligatory propertyダウンロードしたユーザーをエクスポートするオブジェクトのリスト
get_user_contextst.GetUsersContextNone, in __init__() assign GetUsersContext()検索コンテキスト、Twitterへの次のリクエストを行うための重要なすべてのプロパティを含む
web_clientst.WebClientstweet.http_request.WebClientRequests()WebClient の実装。カスタムの実装に置き換えることができる。
auth_token_provider_factoryst.auth.AuthTokenProviderFactoryst.auth.SimpleAuthTokenProviderFactory()認証トークンを提供する AuthTokenProvider のファクトリ

TweetOutputクラス

TweetOutputは、スクラップされたツイートをエクスポートするためのインターフェースです。Stweetには、以下のような実装がある。

TweetOutput implementationDescription
CollectorTweetOutput出力はメモリ内にツイートを保存し、ツイートのリストを返す get_scrapped_tweets() メソッドを備えている
CsvTweetOutput出力は、ツイートをcsvファイルにエクスポートします。
JsonLineFileTweetOutput出力はツイートをJSONオブジェクトとしてエクスポートし、ファイルの各行にはツイートを含む1つのJSONオブジェクトが存在する
PrintEveryNTweetOutputN個のつぶやきを画面に出力する。N個の値はコンストラクタで指定する。
PrintFirstInRequestTweetOutput受信したリクエストの最初のツイートを出力する
PrintTweetOutput出力はすべてのツイートを表示

さらに、TweetOutputは他にも様々な方法で実装することができます。

UserOutputクラス

UserOutputは、スクラップされたユーザをエクスポートするためのインターフェースです。Stweetには、以下のような実装があります。

UserOutput implementationDescription
CollectorUserOutput出力はユーザーをメモリに保存し、メソッド get_scrapped_users() でユーザーのリストを返す。
CsvUserOutput出力はcsvファイルにユーザーを書き出す
JsonLineFileUserOutput出力はユーザーをJSONオブジェクトとしてエクスポートし、ファイルの各行にはユーザーを持つ1つのJSONオブジェクトがあります。
PrintEveryNUserOutput出力はN人ごとに画面に表示され、Nの値はコンストラクタで指定できる
PrintFirstInRequestUserOutput出力は、受信したリクエストの最初のユーザーを表示します。
PrintUserOutput出力はすべてのユーザーを印刷します。

さらに、UserOutputは、他の多くの方法で実装することができます。

ProxyClientRequestsクラス

ProxyClientRequestsは、st.WebClientの実装で、プロキシを使用することができ、request.requestメソッドで使用できる追加オプションを提供することができます。

PropertyTypeDescription
proxiesDict[str, str]プロキシの URL にマッピングするプロトコルを指定する辞書。
optionsDict[str, Any]プロキシの URL にマッピングするディクショナリ。

さらに、独自のWebClientを実装することも可能です。