Tweepyでツイート検索した結果をCSVに出力するサンプルコードを紹介したいと思います。
前準備
tweepyのバージョン3~4で関数の書き方などがかなり異なるので、バージョンを固定します。他の記事などでコードで「 ‘API’ object has no attribute ‘search’」などのエラーが出る場合は恐らくは参照しているtweepyのバージョンが違います。
# tweepyのインストール $pip install tweepy==3.8.0
このコードはTwitterAPI V1.1のものでしか動作しないので注意してください。基本的に2021年9月以降にAPI鍵を作成された方はevaluateに権限をアップグレードしないと使用できません。V2のAPI鍵しか持っていない場合は以下の記事を参考にしてください。
関連記事:TweepyとTwitter API V2を使って大量のツイート+詳細情報をスクレイピングする
Tweepyでツイート検索結果をCSVに出力するサンプルコード
# ライブラリのインポート import tweepy from datetime import datetime,timezone import pytz import pandas as pd # Twitterの認証 #********には自分自身のAPIキーなどを入力してください consumer_key = 'xxx' consumer_secret = 'xxx' access_token = 'xxx' access_token_secret = 'xxx' #Twitterの認証 auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) # ”wait_on_rate_limit = True” 利用制限にひっかかた時に必要時間待機する api = tweepy.API(auth,wait_on_rate_limit=True) # 検索条件の設定 search_word = 'コロナ min_faves:200' #何件のツイートを取得するか item_number = 150 #検索条件を元にツイートを抽出 tweets = tweepy.Cursor(api.search,q=search_word, tweet_mode='extended',result_type="mixed",lang='ja').items(item_number) #関数: UTCをJSTに変換する def change_time_JST(u_time): 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に格納する tw_data = [] for tweet in tweets: #ツイート時刻とユーザのアカウント作成時刻を日本時刻にする tweet_time = change_time_JST(tweet.created_at) create_account_time = change_time_JST(tweet.user.created_at) #tweet_dataの配列に取得したい情報を入れていく tw_data.append([ tweet.id, tweet_time, tweet.full_text, tweet.favorite_count, tweet.retweet_count, tweet.user.id, tweet.user.screen_name, tweet.user.name, tweet.user.description, tweet.user.friends_count, tweet.user.followers_count, create_account_time, tweet.user.following, tweet.user.profile_image_url, tweet.user.profile_background_image_url, tweet.user.url ]) #取り出したデータをpandasのDataFrameに変換 #CSVファイルに出力するときの列の名前を定義 labels=[ 'ツイートID', 'ツイート時刻', 'ツイート本文', 'いいね数', 'リツイート数', 'ID', 'ユーザー名', 'アカウント名', '自己紹介文', 'フォロー数', 'フォロワー数', 'アカウント作成日時', '自分のフォロー状況', 'アイコン画像URL', 'ヘッダー画像URL', 'WEBサイト', ] #tw_dataのリストをpandasのDataFrameに変換 df = pd.DataFrame(tw_data,columns=labels) #CSVファイルに出力する file_name=f'tw_data_{search_word}.csv' #CSVファイルを出力する df.to_csv(file_name,encoding='utf-8-sig',index=False)
関連記事:自然言語処理が簡単にできる「nlplot」でツイートデータを可視化・分析する
コメント