Python

Tweepyでツイートの検索結果をCSVに出力保存するサンプルコード

この記事は約6分で読めます。

 

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」でツイートデータを可視化・分析する

 

 

コメント

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