こんにちは。今回はpythonでツイッターから検索をする方法をお伝えします。今回も出来るだけコード量を少なくし分かりやすくご説明します。検索が出来れば”特定のワードの検索結果を定期的に調べたり”、”特定のワードをツイートしたユーザーをフォローする””特定のワードが含まれているツイートをリツイートする”など応用することでTwitterで出来ることの幅が大きく広がります。
※こちらのコードはtwitter apiを使用するために必要なキーが揃っている前提で書いています
コード
では、さっそくコードです。今回も【tweepy】を使用していますのでインストールされてない方はインストールしてから使用してください。
pip install tweepy
【tweepy】をインストールしたら、下記のコードの「CK」「CS」「AT」「AS」にそれぞれ「twitter api」キーを入力すればコピペで実行可能です。
import tweepy CK="コンシューマキーを入力" CS="コンシューマシークレットを入力" AT="アクセストークンを入力" AS="アクセスシークレットを入力" auth = tweepy.OAuthHandler(CK, CS) auth.set_access_token(AT, AS) api = tweepy.API(auth) for status in api.search(q='ここに検索したいワードを入れる',count=100,): print(status.user.id) print(status.user.screen_name) print(status.user.name) print(status.text) print(status.created_at) print(status.id_str) print(status.user.statuses_count) print(status.user.followers_count) print(status.user.friends_count) print(status.user.listed_count) print(status.user.favourites_count) print(status)
解説
1行目でtweepyをインポートしています。
3~6行目でご自身のapiキーを入力してください。
11行目の「q=」へ検索したいワードを入れてください。「count」は検索結果の量です。100であれば直近から100ツイート分検索されます。
1~100まで指定することが可能で指定しない場合のデフォルト値は15です。
このコードでは検索結果を「status」へ繰り返しています。
「status」の中にはツイートをした「投稿したユーザー名」「投稿内容」「投稿日時」「投稿ID」などが入っています。
今回は
- status.user.id:ツイートしたユーザーのID
- status.user.screen_name:ツイートしたユーザーのスクリーンネーム
- status.user.name:ユーザーネーム
- status.text:投稿内容
- status.created_at:投稿日時
- status.id_str:投稿ID
- status.user.statuses_count:ツイートしたユーザーのツイート数
- status.user.followers_count:ツイートしたユーザーのフォロワー数
- status.user.friends_count:ツイートしたユーザーのフォロー数
- status.user.listed_count:ツイートしたユーザーのお気に入り数
- status.user.favourites_count:ツイートしたユーザーのいいねの数
- status:statusの中身全て
を出力しています。
詳細検索一覧
「q=」の後に下記のワードを入れることで、詳細な検索が可能です。
コマンド | 説明 | 例 | |
---|---|---|---|
-検索ワード | 指定したワードを含まない検索
左ここに内容を入れる
右ここに内容を入れる
|
q=’焼肉 -まずい’ | |
@ユーザーID名 | 特定のユーザー名に関するツイートを検索 | q=’@_FROMATION_’ | |
from:ユーザーID名 | 特定のユーザー名から検索 | q=’おはようございます from:_FROMATION_’ | |
-from:ユーザーID名 | 特定のユーザー名を除外して検索 | q=’おはようございます from:_FROMATION_’ | |
since:日時 | 入力した日付以降から検索 | q=’python since:2020-10-14_12:12_JST’ | |
until:日時 | 入力した日付以前から検索 | q=’python since:2020-10-15_12:12_JST’ | |
filter:images | 画像を含むツイートのみ検索 | q=’焼肉 filter:images’ | |
filter:videos | 画像を含むツイートのみ検索 | q=’お寿司 filter:videos’ | |
filter:links | URLを含むツイートのみ検索 | 可 | q=’ニュース filter:links’ |
-filter:links | URLを含むツイートを除外して検索 | q=’ニュース -filter:links’ | |
filter:verified | 認証されているアカウントのみ検索 | q=’焼肉 filter:verified’ | |
source: | 指定したソースからのツイートを検索 | q=’焼肉 source:Instagram’ | |
検索ワード[半角スペース]検索ワード2 | 指定したワードを全て含む検索 | q=’焼肉 お寿司’ | |
検索ワード[半角スペース]OR[半角スペース]検索ワード2 | 指定したワードのいずれかを含む検索 | q=’焼肉 OR お寿司’ | |
“検索ワード” | 完全一致検索 | q=’焼肉たべたい’ | |
#検索ワード | ハッシュタグ検索 | q=’#グルメ’ | |
lang:言語コード | 言語を指定して検索 | q=’焼肉 lang:ja ‘ | |
-retweets | リツイートを除外したツイート | q=’焼肉 -retweets’ | |
min_retweets:数字 | 指定した数字以上リツイートされたツイートを検索 | q=’焼肉 min_retweets:5′ | |
min_faves:数字 | 指定した数字以上お気に入りされたツイートを検索 | q=’焼肉 min_faves:5′ | |
-replies | リプライを除外した検索 | q=’焼肉 -replies | |
min_replies:数字 | 指定した数字以上リプライされたツイートを検索 | q=’焼肉 min_replies:5 | |
検索ワード[半角スペース]:) | ポジティブな内容を検索 | q=’焼肉 🙂 ‘ | |
検索ワード[半角スペース]:( | ネガティブな内容を検索 | q=’焼肉 🙁 ‘ | |
near:場所名 within:範囲(半径) | 指定した場所からの指定した半径内で検索 | q=’near:京都市 within:1.5km’ | |
geocode:緯度,経度,範囲 | 緯度と経度と半径を指定した検索 | q=’geocode:35.010362,135.768735,0.5km’ | |
検索ワード[半角スペース]:( | ネガティブな内容を検索 | q=’焼肉 🙁 ‘ |
apiリミット(制限)
「api.search」のapiリミットは15分で450回です。それを超えて検索をすることは出来ません。
まとめ
いかがでしたでしょうか?今回はpythonでツイートを検索する方法を解説しました。検索から応用して様々なアイデアが可能になるので是非習得してください。
応用編
この検索をした応用方法をご紹介します。検索結果から得られる情報からフォローやアンフォロー(フォロー解除)、リツイートなどの操作を組み合わせて、条件に合わせた操作が可能になります。各コマンドの詳細は下記の記事を参考にして下さい。
フォロワーが100以上いるユーザーをフォローまたはアンフォロー(フォロー解除)・リツイート
if status.user.followers_count > 99: api.create_friendship(status.user.id)#フォローする場合 api.destroy_friendship(status.user.id)#アンフォロー(フォロー解除)する場合 api.retweet(status.id_str)#そのツイートをリツイートする場合
フォロ-数が100以上いるユーザーをフォローまたはアンフォロー(フォロー解除)・リツイート
if status.user.friends_count > 99: api.create_friendship(status.user.id)#フォローする場合 api.destroy_friendship(status.user.id)#アンフォロー(フォロー解除)する場合 api.retweet(status.id_str)#そのツイートをリツイートする場合
フォロー数がフォロワーより多いユーザーをフォローまたはアンフォロー(フォロー解除)・リツイート
if status.user.friends_coun - status.user.followers_count > 0: api.create_friendship(status.user.id)#フォローする場合 api.destroy_friendship(status.user.id)#アンフォロー(フォロー解除)する場合 api.retweet(status.id_str)#そのツイートをリツイートする場合
ツイートの内容に○○が含まれているユーザーをフォローまたはアンフォロー(フォロー解除)・リツイート
if "○○" in status.text: api.create_friendship(status.user.id)#フォローする場合 api.destroy_friendship(status.user.id)#アンフォロー(フォロー解除)する場合 api.retweet(status.id_str)#そのツイートをリツイートする場合
上記のように検索とその他のコードを組み合わせることで様々な処理が可能になり出来ることの幅が一気に広がります。
※繰り返しの中でフォローやリツイートを行うと一度に大量にフォローなどを実行することになります。ツイッターでは短時間での多数のフォローなどを行うとスパムと判断されアカウントが凍結されてしまう恐れがあります。コードを実行する場合は十分に注意してください。
業務支援ツールの製作を致します
株式会社FROMATIONではお客様の用途に合わせたオリジナルの業務支援(自動化)ツールを製作しております。
【毎日の10分を1秒に】
をコンセプトに、お客様の用途に特化したピンポイントな自動化ツールをご提供致します。「大手のRPAソフトを導入するまでもない日常ちょっとした手間」「毎日のルーチンワーク」など、簡単なツールで驚くほど業務が改善する場合もあります。
【毎日こんな作業で困ってるんだけど】
【こんなツール作れないかな】
など企業様も個人様もお気軽にお問い合わせください。
出来ることの一例
- webからのデータ収集
- Excelと連携したデータ処理
- メールの受信と自動返信
- データの自動アップロード
- 画像や音声データの編集・変換処
- 各種SNSの自動処理
上記以外にも出来ることは多数ありますので、お気軽にお問合せ下さい。