トレンドエリアコード「WOEID」
Twitterのトレンドワードを取得する際、地域(コード = WOEID)を指定できます。
指定できる地域は以下の22個(都市21、日本1)です。
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
APIからWOEID確認する方法
「R」を使う場合、WOEIDは以下のように取得できます。
#TwitterAPI認証情報設定。API登録の際に指定された値を指定
consumerKey <- "xxxxx"
consumerSecret <- "xxxxx"
accessToken <- "xxxxx"
accessSecret <- "xxxxx"
#TwitterAPIにログイン
library("twitteR")
options(httr_oauth_cache = TRUE)
setup_twitter_oauth(consumerKey, consumerSecret, accessToken, accessSecret)
#トレンドを拾えるエリアを変数に入れる
woeid <- availableTrendLocations()
#日本のエリアのみフィルタリング
library("dplyr")
woeidj <- woeid %>% filter(country == "Japan")
head(woeidj)
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
トレンドワード抽出
ある地域のトレンドワードは、「getTrends」関数にWOEIDを指定して取得します。
#トレンドワード取得例(Tokyo Japan 1118370)
trend <- getTrends(1118370)
trend$name %>% head() #neme列に収録されているワードをピックアップ
[1] "#世界まる見え" "#ForeverGold2" "#片恋グルメ日記2" "#有吉ゼミ" "人身事故"
[6] "西武池袋線"
次に、22のエリアからトレンドワードを5つずつ取り出してみます。
(後ほど「Japan」エリアを外して21地域とします)
エリアごとのワードをループして結合
「for」を使い、冒頭で取得したwoeidj(データフレーム)の3列目のWOEIDの値を「getTrends関数」の引数として1行ずつ処理し、結合(rbind)していきます。
#22のエリアの各トレンドワード5つを抽出
trwords = NULL
for( i in 1 : 22){
trwords_select1 <- getTrends(woeidj[i, 3]) #WOEIDを順々に割り当て
trwords_select1a <- trwords_select1$name %>% head(5) #name列のワードを5つ
trwords <- rbind(trwords, trwords_select1a) #1行ずつ結合
}
#確認
head(trwords)
[,1] [,2] [,3] [,4]
trwords_select1a "ヤクルト" "#CDTVライブライブ" "キスの日" "#黄金青春_セクゾ"
trwords_select1a "きたえーる" "#CDTVライブライブ" "キスの日" "#恋マジ"
trwords_select1a "#KIZUNA" "ヤクルト1000" "#CDTVライブライブ" "キスの日"
trwords_select1a "ヤクルト" "#CDTVライブライブ" "キスの日" "#黄金青春_セクゾ"
trwords_select1a "ヤクルト" "#CDTVライブライブ" "キスの日" "#黄金青春_セクゾ"
trwords_select1a "#CDTVライブライブ" "キスの日" "#黄金青春_セクゾ" "#恋マジ"
[,5]
trwords_select1a "#恋マジ"
trwords_select1a "#黄金青春_セクゾ"
trwords_select1a "#黄金青春_セクゾ"
trwords_select1a "#恋マジ"
trwords_select1a "#恋マジ"
trwords_select1a "#JO1と共に行くよWith_Us"
class(trwords)
[1] "matrix" "array"
マトリックス型なので、データフレーム型に変換しました。
#データフレーム変換
trwords_df <- as.data.frame(trwords)
地域名列を追加
地域名の列を追加(cbind)します。
#地域名列付与
trwords_df2 <- cbind(woeidj[1:22, 1], trwords_df)
rownames(trwords_df2) <- NULL #今の行名外す
head(trwords_df2)
woeidj[1:22, 1] V1 V2 V3 V4
1 Kitakyushu ヤクルト #CDTVライブライブ キスの日 #黄金青春_セクゾ
2 Saitama きたえーる #CDTVライブライブ キスの日 #恋マジ
3 Chiba #KIZUNA ヤクルト1000 #CDTVライブライブ キスの日
4 Fukuoka ヤクルト #CDTVライブライブ キスの日 #黄金青春_セクゾ
5 Hamamatsu ヤクルト #CDTVライブライブ キスの日 #黄金青春_セクゾ
6 Hiroshima #CDTVライブライブ キスの日 #黄金青春_セクゾ #恋マジ
V5
1 #恋マジ
2 #黄金青春_セクゾ
3 #黄金青春_セクゾ
4 #恋マジ
5 #恋マジ
6 #JO1と共に行くよWith_Us
各列の名称も変更しておきます。
colnames(trwords_df2) <- c("area", "trendword1", "trendword2", "trendword3", "trendword4", "trendword5"
今回、都市だけにしようと思ったので、地域の中に含まれている「日本」(Japan)を外しておきます。
#エリアにある「Japan」を外す(都市だけにする)
trwords_df3 <- trwords_df2 %>% filter(area != "Japan")
#確認
tail(trwords_df3)
CSV出力
CSVファイルに書き出します。
#csv書き出し
library(readr)
write_csv(trwords_df3, "trwords_df3.csv")
Numbersで開いてみました。
上記の処理を行なったタイミングにずれがあるので、上記処理と下記の出力内容に違いがあるかもしれません。
了