Tweepyの時間指定キーワード検索であるはずのツイートがない

実現したいこと

tweepyを使って時間指定をして特定のキーワードを含むツイートを全件取得し、CSV形式で出力したい。
また、リツイートを弾き、 botも弾きたいため、URLを含むツイートも除外。
災害関連のツイートを取得したいため、「火事」や「火災」などで何度か試行している。

発生している問題・エラーメッセージ

CSVで出力はできているが、iOS版のtwitterで検索した場合にあるはずのツイートが無かったり、「火事」と検索するとハッシュタグ「#火事」が含まれている「火事」を含むツイートがPython側で検索に引っ掛からなかったりする。
また、ハッシュタグ「#火事」と検索してもまったく検索に引っ掛から無かったりする。

該当のソースコード

Pythonです。TwitterアカウントはElevatedクラスで、Twitter API v1.1を使用しています。

#ライブラリのインポート
import tweepy
from datetime import datetime,timezone
import pytz
import pandas as pd

#Twitterの認証
api_key = ""
api_secret = ""
access_key = ""
access_secret = ""
auth = tweepy.OAuthHandler(api_key, api_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)

#検索条件の設定
searchkey = '#火災 -filter:retweets -filter:links'
date_since = "2022-12-07_23:59:59_JST"
date_until = "2022-12-08_11:29:59_JST"

#検索条件を元にツイートを抽出
tweets = tweepy.Cursor(api.search_tweets,
q=searchkey,
lang='ja',
since = date_since,
until = date_until,
).items()

#関数: UTCをJSTに変換する
def change_time_JST(u_time):
#イギリスのtimezoneを設定するために再定義する
utc_time = datetime(u_time.year, u_time.month,u_time.day,
u_time.hour,u_time.minute,u_time.second, tzinfo=timezone.utc)
#タイムゾーンを日本時刻に変換
jst_time = utc_time.astimezone(pytz.timezone("Asia/Tokyo"))
# 文字列で返す
str_time = jst_time.strftime("%Y-%m-%d_%H:%M:%S")
return str_time

#抽出したデータから必要な情報を取り出す
#取得したツイートを一つずつ取り出して必要な情報をtweet_dataに格納する
tweet_data = []
data_number = 0
for tweet in tweets:
#ツイート時刻とユーザのアカウント作成時刻を日本時刻にする
data_number += 1
tweet_time = change_time_JST(tweet.created_at)
create_account_time = change_time_JST(tweet.user.created_at)
#tweet_dataの配列に取得したい情報を入れていく
tweet_data.append([
data_number,
tweet.id,
tweet_time,
tweet.text,
tweet.favorite_count,
tweet.retweet_count,
tweet.user.screen_name,
tweet.user.name,
])

#取り出したデータをpandasのDataFrameに変換
#CSVファイルに出力するときの列の名前を定義
labels=[
'No.',
'ツイートID',
'ツイート時刻',
'ツイート内容',
'いいね数',
'リツイート数',
'ユーザID',
'アカウント名',
]
#tweet_dataのリストをpandasのDataFrameに変換
df = pd.DataFrame(tweet_data,columns=labels)

#CSVファイルに出力する
#CSVファイルの名前を決める
file_name=''
#CSVファイルを出力する
df.to_csv(file_name,encoding='utf-8-sig',index=False)

試したこと

制限があったりするので時間を空けつつ色々検索ワードを変えて試してみているが特に進展はなく、むしろひっかからないツイートが多い。

プログラミングがあまり得意ではないので分かりやすく教えてもらえると幸いです。
よろしくお願いします。

コメントを投稿

0 コメント