【初心者OK!】Twitter APIを使って地域トレンドを取得する方法

Python

こんにちは 【文系、非エンジニア】マーケターのNocky(のっきー)です!

普段はIT企業でマーケティング担当として働いています。業務でプログラミングに触れなければならない状況に落入り、そこからプログラミングを始め、現在はプログラミングをマーケティングに活用しようと日々、学んでいます!!

自分のように【文系、非エンジニア、初心者】の方でもプログラミングを活用していきたいと思っている方は多いのではないかと思い、【文系、非エンジニア、初心者】の方にもわかるように(昔の自分でも分かるように)噛み砕いてプログラミングの活用記事を書いています!

ここから本題です!

今回の記事ではTwitter APIを使ってTwitterの地域トレンドを取得する方法をご紹介します!

地域トレンドを取得するためには事前にTwitter APIの申請を行い、APIにアクセスするためのKeyを取得する必要があります!


Twitter APIの申請については下記の記事をご参照ください!自分で言うのもなんですが、結構わかりやすくまとめられていると思います!

地域トレンドを取得するPythonのコード

地域トレンドを取得するためのPythonの全体コードは下記になります。
コピペして、APIにアクセスするための4つのKey(API_KEY、API_SECRET、ACCESS_TOKEN,ACCESS_TOKEN_SECRET)などをご自身で調整してください。

import tweepy
import pandas as pd

# Twitterの認証
# 取得したキーを格納
API_KEY = "***********************"
API_SECRET = "***********************"
ACCESS_TOKEN = "***********************"
ACCESS_TOKEN_SECRET = "***********************"
 
# Tweepy設定
auth = tweepy.OAuthHandler(API_KEY, API_SECRET) # Twitter API認証
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) # アクセストークン設定
# ”wait_on_rate_limit = True” 利用制限にひっかかた時に必要時間待機する
api = tweepy.API(auth ,wait_on_rate_limit = True) 

# WOEIDの設定(トレンドを取得したい地域番号を入力)
woeid = 23424856
#トレンドを取得
trends = api.get_place_trends(woeid)

#データフレームに変換
df = pd.DataFrame(trends[0]["trends"])

file_name='tw_trend.csv'
#CSVファイルを出力する
df.to_csv(file_name,encoding='utf-8-sig',index=False)

Pythonのコード構成は以下のようになっています。

  1. ライブラリのインポート
  2. Twitter APIのアクセス認証
  3. 地域の設定
  4. トレンドの抽出
  5. pandasのDataFrameに変換
  6. CSVファイルに出力

Pythonのコードの説明

ここからは各項目ごとに詳しくコードを見ていきます。

ライブラリのインポート

import tweepy
import pandas as pd

TwitterのAPIを活用するために必須なライブラリが「tweepy」です。 このライブラリを使うことで、ツイート情報を数行のコードで取得できます。

ライブラリのインストールがまだの方はターミナルで「pip install tweepy」と入力してインストールしておいてください。

pip install tweepy

Google Colaboratoryで実行される方は「!pip install tweepy」でインストールできます。

※Google Colaboratoryのノートで ライブラリをインストールする際は文の初めに「!」を入力すれば問題ないです。

他のライブラリの以下の目的でインポートしています。インストールされてないようでしたら、上記と同じやり方でインストールしてください。

  • pandas => 取得データを加工する

Twitter APIへのアクセス認証

# Twitterの認証
# 取得したキーを格納
API_KEY = "***********************"
API_SECRET = "***********************"
ACCESS_TOKEN = "***********************"
ACCESS_TOKEN_SECRET = "***********************"
 
# Tweepy設定
auth = tweepy.OAuthHandler(API_KEY, API_SECRET) # Twitter API認証
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) # アクセストークン設定

# ”wait_on_rate_limit = True” 利用制限にひっかかた時に必要時間待機する
api = tweepy.API(auth ,wait_on_rate_limit = True)

この部分ではTwitter APIへのアクセス認証を行います

誰がAPIにアクセスしようとしているのか、アクセスする権限があるのかTwitter側でチェックするために必要な工程です。

「********」の部分に、事前に取得したキーを入力してください。

これでTwitter APIを使う準備ができました!

地域の設定方法

# WOEIDの設定(トレンドを取得したい地域番号を入力)
woeid = 23424856

地域を設定するためにはWOEID(Where On Earth IDentifier)を活用します。

WOEIDは世界の国、都市にIDを与えたものです。このWOEIDを利用して、特定の地域のトレンドを取得することができます。

規模にかかわらず、どんな都市でもIDが与えられているわけではありません。

日本ではこれらの都市にIDが与えれています。

         name country    woeid
1  Kitakyushu   Japan  1110809
2     Saitama   Japan  1116753
3       Chiba   Japan  1117034
4     Fukuoka   Japan  1117099
5   Hamamatsu   Japan  1117155
6   Hiroshima   Japan  1117227
7    Kawasaki   Japan  1117502
8        Kobe   Japan  1117545
9    Kumamoto   Japan  1117605
10     Nagoya   Japan  1117817
11    Niigata   Japan  1117881
12 Sagamihara   Japan  1118072
13    Sapporo   Japan  1118108
14     Sendai   Japan  1118129
15  Takamatsu   Japan  1118285
16      Tokyo   Japan  1118370
17   Yokohama   Japan  1118550
18    Okinawa   Japan  2345896
19      Osaka   Japan 15015370
20      Kyoto   Japan 15015372
21      Japan   Japan 23424856
22    Okayama   Japan 90036018

トレンドの抽出

#トレンドを取得
trends = api.get_place_trends(woeid)

トレンド取得にはAPI.get_place_trends()を使います。

インストールされているTweepyのバージョンや実行環境によって、上手く実行できない場合があります。その場合はtrends_place()を試してみてください。

trends = api.trends_place(woeid)

pandasのDataFrameに変換

#データフレームに変換
df = pd.DataFrame(trends[0]["trends"])

エクセルのような表でデータを確認するために、リスト型のデータからDataFrameへの変換させてます。

csvファイルに出力

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

DataFrameのデータをCSVに変換させます。
CSVは実行しているPythonファイルがある場所に保存されます。

to_csv()の括弧の中 の意味はそれぞれ以下の通りです。

  • file_name => ファイル名
  • encoding=‘utf-8_sig => 日本語の文字化けを防ぐ
  • index = False => CSVファイルの1列目にインデックスを入れない

PCの機種によって文字化けしてしまうことがあるようです。その場合は「encoding= ‘Shift jis’」や「encoding= ‘utf-8’」などを試してみてください!

終わり

いかがでしたでしょうか! 今回の記事ではTwitter APIを使って地域トレンドを取得する方法について紹介してきました。

この記事が皆さんの役に立てば、嬉しいです!

今後もTwitterのAPIを活用したデータ分析やデータ収集についての記事も書いていきたいと思います!

Twitterのツイートを抽出する方法についてまとめた記事もありますので、是非、参考になさってみてください。

おすすめ記事

Pythonについてもっと学んでみたい!と思った方は私がPythonを学んだ学習方法を紹介している記事を参考にしてみてください!! 

この記事を書いた人
Nocky

広告代理店→スタートアップ→IT企業で一貫してマーケティングに従事。

マーケティングやプログラミングについての情報をメインに発信。
プログラミングは主にPythonとJavascript(Vue.js)を業務で活用するために学習しています。

Nockyをフォローする
PythonTwiiter API
シェアする
Norari Marketer
タイトルとURLをコピーしました