はじめに
TwitterAPIを用いて、人気のツイートにどの様な特徴があるかなどのデータ分析をする際に、ツイートを取得するかと思いますが、その際のツイートの検索条件の指定の仕方、及び取得したツイートの情報をCSVファイルに出力させる方法を説明していきたいと思います。
TwitterAPIを使用するにあたっての説明についてはこちらの記事を参考にしてください
検索条件の指定
まずは、検索条件の指定の仕方から。
Twitterの検索術に関してはこちらを参考にしました。
では、コードを書いていきましょう。
import tweepy
from config import CONFIG
CONSUMER_KEY = CONFIG["CONSUMER_KEY"]
CONSUMER_SECRET = CONFIG["CONSUMER_SECRET"]
ACCESS_TOKEN = CONFIG["ACCESS_TOKEN"]
ACCESS_SECRET = CONFIG["ACCESS_SECRET"]
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
tweet_data = [] #取得したツイートを格納するリスト
for tweet in api.search(q="映画 min_faves:500 min_retweets:500 exclude:retweets",tweet_mode='extended',count=10):
try:
tweet_data.append([tweet.id, tweet.user.screen_name, tweet.created_at, tweet.full_text.replace('\n',''), tweet.favorite_count, tweet.retweet_count, tweet.user.followers_count, tweet.user.friends_count])
except Exception as e:
print(e)
APIのキーの設定や、インスタンスの作成の説明は割愛させていただきます。
そちらの説明に関してはこちらの記事を参考にしてください。
まずは、取得したツイートを格納するリストを作成します。
tweet_data = []
次に、api.search()
でツイートの検索を行なっているわけですが、この引数の記述で検索条件を細かく指定しています。
q=
の部分から見ていきましょう。
"映画 min_faves:500 min_retweets:500 exclude:retweets"
と記述されていますが、それぞれの意味について解説します。
映画
検索するキーワード
min_faves:500
いいね数が500以上
min_retweets:500
リツイート数が500以上
exclude:retweets
検索結果にリツイートを含まない
この検索結果にリツイートを含まないというのは、ツイートを取得する際にリツイートも含んでしまうと、同じツイート内容が重複するため、それを回避するために指定しています。
他にも、filter:images
や、filter:videos
などをq=
に含めると、画像付きのツイートや動画付きのツイートで検索することもできます。
次に、tweet_mode='extended'
を指定することで、ツイートの本文が長い場合に、途切れない様にしています。
※デフォルトでは途切れてしまうため。
取得したツイートの中から扱う値の指定
下記のコードの部分で取得したツイートをリストに格納しています。
tweet_data.append([tweet.id, tweet.user.screen_name, tweet.created_at, tweet.full_text.replace('\n',''), tweet.favorite_count, tweet.retweet_count, tweet.user.followers_count, tweet.user.friends_count])
`.append`する際に、引数を指定していますが、ここで取得したツイートの中から扱う値の指定をしています。
tweet.id
ツイートIDの取得
tweet.user.screen_name
ユーザーネームの取得
tweet.created_at
ツイート日時の取得
tweet.full_text.replace('\n','')
ツイート本文を改行を取り除いた上で取得
tweet.favorite_count
いいね数の取得
tweet.retweet_count
リツイート数の取得
tweet.user.followers_count
フォロワー数の取得
tweet.user.friends_count
フォロー数の取得
これで上記で指定した内容が、tweet_data
にcount
で指定した分格納されていることになります。
では、ツイートの取得ができたので、CSVファイルに書き出しましょう。
CSVファイルへの書き出し
import csv #CSVライブラリの読み込み
## 以下省略
## 一番下に追記
with open('tweet_test.csv', 'w',newline='',encoding='utf-8') as f:
writer = csv.writer(f, lineterminator='\n')
writer.writerow(["id","user","created_at","text","fav","RT","follower","follows"])
writer.writerows(tweet_data)
pass
上記のコードを追記してください。
CSVファイルへの書き出しについての細かい説明に関しては、こちらの記事を参考にしてください。
簡単な説明だけします。
with open('tweet_test.csv', 'w',newline='',encoding='utf-8') as f:
この'tweet_test.csv'
の部分でcsvのファイル名を指定しています。
writer.writerow(["id","user","created_at","text","fav","RT","follower","follows"])
writer.writerow()
で、カラム名を設定しています。
先ほど行なった作業で
ツイートID
ユーザーネーム
ツイート日時
ツイート本文
いいね数
リツイート数
フォロワー数
フォロー数
の順番で値を格納しているので、この値に合わせて、カラム名を指定しています。
そして、writer.writerows(tweet_data)
で書き出すデータを指定しています。
完成したコード
import tweepy
import csv
from config import CONFIG
CONSUMER_KEY = CONFIG["CONSUMER_KEY"]
CONSUMER_SECRET = CONFIG["CONSUMER_SECRET"]
ACCESS_TOKEN = CONFIG["ACCESS_TOKEN"]
ACCESS_SECRET = CONFIG["ACCESS_SECRET"]
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
tweet_data = [] #取得したツイートを格納するリスト
for tweet in api.search(q="映画 min_faves:500 min_retweets:500 exclude:retweets",tweet_mode='extended',count=10):
try:
tweet_data.append([tweet.id, tweet.user.screen_name, tweet.created_at, tweet.full_text.replace('\n',''), tweet.favorite_count, tweet.retweet_count, tweet.user.followers_count, tweet.user.friends_count])
except Exception as e:
print(e)
with open('tweet_test.csv', 'w',newline='',encoding='utf-8') as f:
writer = csv.writer(f, lineterminator='\n')
writer.writerow(["id","user","created_at","text","fav","RT","follower","follows"])
writer.writerows(tweet_data)
pass
このプログラムを実行すると、映画というワードを含み、ファボとRTが500以上でRTを含まないツイートが10件取得でき、取得したツイートをCSVファイルに書き出せます。
これでいくつかの条件で取得し、取得したデータをグラフにしたり、形態素分析に繋げられるかと思います。