各政党フォロワーのユーザー情報を取得してみた
こんにちは鬱太郎です。昨日取得したフォロワーIDからユーザー情報を取得してみました。ですので、それについて記事にしたいと思います。
ソースコード
取得したデータ
プログラムを起動して約2時間ほどですべてのデータが集まりました!データを取得してから、データベースに追加するなどの処理をしていたためレートリミット回復の時間はあまりいりませんでした。
取得したデータの詳細を表にまとめておきますね。
| 政党 | IDの数 | 取得したデータ数 | ロス | サイズ(MB) |
|---|---|---|---|---|
| 自民党 | 124,328 | 124,317 | 11 | 131.5 |
| 公明党 | 73,705 | 73,702 | 3 | 72.2 |
| 民進党 | 25,335 | 25,333 | 2 | 30.1 |
| 日本維新の会 | 13,707 | 13705 | 2 | 15.8 |
| 立憲民主党 | 174,896 | 174,880 | 16 | 195.2 |
| 希望の党 | 10,607 | 10,606 | 1 | 12.2 |
| 日本のこころ | 37,913 | 37,905 | 8 | 47.0 |
| 共産党 | 36,732 | 36,727 | 5 | 43.1 |
| 社民党 | 21,649 | 21,644 | 5 | 27.1 |
| 自由党 | 28,244 | 28,240 | 4 | 35.5 |
| 幸福実現党 | 6,754 | 6,753 | 1 | 7.6 |
どうしても、取得時にロスが発生してしまうようです。フォロワーのIDを取得してからユーザーの情報を取得する間に、アカウント削除などの理由から取れないユーザー情報があったようです。
ユーザー情報のJSONの例
取得したデータの一例を表示したいと思います。こんな感じのデータをTwitterAPIで取得できます。
{ "_id" : ObjectId("59e1823fae898d323863ba37"), "miniProfileImageURL" : "http://pbs.twimg.com/profile_images/902325250867716096/IXHm182E_mini.jpg", "screenName" : "neet_utsu_taro", "contributorsEnabled" : false, "profileUseBackgroundImage" : false, "profileBackgroundTiled" : false, "createdAt" : "Tue Aug 29 09:12:49 GMT+09:00 2017", "profileBackgroundImageURL" : "http://abs.twimg.com/images/themes/theme1/bg.png", "biggerProfileImageURL" : "http://pbs.twimg.com/profile_images/902325250867716096/IXHm182E_bigger.jpg", "protected" : false, "miniProfileImageURLHttps" : "https://pbs.twimg.com/profile_images/902325250867716096/IXHm182E_mini.jpg", "profileImageURLHttps" : "https://pbs.twimg.com/profile_images/902325250867716096/IXHm182E_normal.jpg", "id" : NumberLong("902323111994916864"), "profileImageURL" : "http://pbs.twimg.com/profile_images/902325250867716096/IXHm182E_normal.jpg", "profileSidebarBorderColor" : "000000", "utcOffset" : -25200, "URLEntity" : { "displayURL" : "neetaro.com", "start" : 0, "end" : 23, "text" : "https://t.co/8tj7yW4gCF", "expandedURL" : "http://www.neetaro.com", "URL" : "https://t.co/8tj7yW4gCF" }, "timeZone" : "Pacific Time (US & Canada)", "defaultProfile" : false, "profileLinkColor" : "91D2FA", "originalProfileImageURLHttps" : "https://pbs.twimg.com/profile_images/902325250867716096/IXHm182E.jpg", "profileSidebarFillColor" : "000000", "rateLimitStatus" : { "limit" : 75, "secondsUntilReset" : 900, "remaining" : 74, "resetTimeInSeconds" : 1507952068 }, "profileBannerMobileURL" : "https://pbs.twimg.com/profile_banners/902323111994916864/1505292216/mobile", "name" : "ニート鬱太郎", "followersCount" : 69, "followRequestSent" : false, "status" : { "inReplyToUserId" : -1, "userMentionEntities" : [ ], "source" : "<a href=\"http://twitter.softama.com/\" rel=\"nofollow\">ツイタマ for Android</a>", "retweeted" : false, "currentUserRetweetId" : -1, "createdAt" : "Sat Oct 14 10:10:19 GMT+09:00 2017", "hashtagEntities" : [ ], "mediaEntities" : [ ], "inReplyToStatusId" : -1, "extendedMediaEntities" : [ ], "id" : NumberLong("919007427701248000"), "text" : "おはようございます❗☀🙋❗", "lang" : "ja", "favorited" : false, "retweet" : false, "accessLevel" : 0, "URLEntities" : [ ], "truncated" : false, "quotedStatusId" : -1, "possiblySensitive" : false, "contributors" : [ ], "retweetedByMe" : false, "symbolEntities" : [ ], "retweetCount" : 0, "favoriteCount" : 1 }, "showAllInlineMedia" : false, "geoEnabled" : false, "profileBannerMobileRetinaURL" : "https://pbs.twimg.com/profile_banners/902323111994916864/1505292216/mobile_retina", "translator" : false, "description" : "ニートです。どうでもいいこと言います。趣味アニメ等 だけども最近全く見てない。。。 フォローされたら、bot等でない限りフォロー返します。 犬は柴犬、猫は黒猫が好き。 柴犬っていいよね…The犬って感じで _(:3」∠)_ ブログやってます。下のリンクからどうぞ。", "profileTextColor" : "000000", "descriptionURLEntities" : [ ], "URL" : "https://t.co/8tj7yW4gCF", "biggerProfileImageURLHttps" : "https://pbs.twimg.com/profile_images/902325250867716096/IXHm182E_bigger.jpg", "profileBannerIPadURL" : "https://pbs.twimg.com/profile_banners/902323111994916864/1505292216/ipad", "lang" : "ja", "defaultProfileImage" : false, "statusesCount" : 192, "accessLevel" : 2, "profileBackgroundImageUrlHttps" : "https://abs.twimg.com/images/themes/theme1/bg.png", "profileBackgroundColor" : "000000", "verified" : false, "favouritesCount" : 218, "friendsCount" : 105, "listedCount" : 0, "profileBannerURL" : "https://pbs.twimg.com/profile_banners/902323111994916864/1505292216/web", "location" : "自宅", "profileBannerRetinaURL" : "https://pbs.twimg.com/profile_banners/902323111994916864/1505292216/web_retina", "originalProfileImageURL" : "http://pbs.twimg.com/profile_images/902325250867716096/IXHm182E.jpg", "profileBannerIPadRetinaURL" : "https://pbs.twimg.com/profile_banners/902323111994916864/1505292216/ipad_retina" }
ユーザー情報JSONのプロパティ説明
私が理解した範囲、およびできる範囲で調べたものを説明していきます。プロパティは大きく分けて
- 数値
- bool値
- 文字列
- 色
- URL
- オブジェクト
- 最近したツイート
に分けられます。これについて説明していきます。
数値
数値は主にIDやツイート数などの計測情報からなります。
| プロパティ名 | 意味 |
|---|---|
| _id | MongoDBのデフォルトID |
| id | ユーザーID |
| utcOffset | UTCのオフセット値(秒) |
| followersCount | フォロワー数 |
| statusesCount | ツイート数 |
| accessLevel | 不明。おそらくTwitterAPIのアクセスレベルか? |
| favouritesCount | いいね数 |
| friendsCount | フォロー数 |
| listedCount | リスト数 |
ツイート数からフォロワー数等の有名な数値がデータとして格納されています。
私のデータはなぜかタイムゾーンがUSカナダになっているのでutcOffsetがおかしい値になっていましたね。
bool値
bool値というのはtrueとfalseで表現する状態を表す値です。trueならyes、falseならnoと考えるとわかりやすいと思います。
| プロパティ名 | 意味 |
|---|---|
| contributorsEnabled | ユーザーがcontributor modeを有効にしたかどうか(認証アカウントで複数人数での管理をOKにしているか等) |
| profileUseBackgroundImage | ホーム画面で背景に画像を使っているかどうか |
| profileBackgroundTiled | ホーム画面で背景にタイル画像を使っているかどうか |
| protected | 鍵垢かどうか |
| defaultProfile | ユーザーがユーザープロファイルのテーマまたは背景を変更していないことを示します。 |
| followRequestSent | 不明 |
| showAllInlineMedia | 不明 |
| geoEnabled | 位置情報を有効にしているかどうか |
| translator | ユーザーがTwitterの翻訳者コミュニティに参加しているかどうか |
| defaultProfileImage | trueの場合、ユーザが自分のプロフィール画像をアップロードしておらず、代わりにデフォルト画像が使用されていることを示します。 |
| verified | 認証済みかどうか |
Twitterの設定情報などが多いですね。鍵垢か認証済みがよく知られている項目でしょうか?
文字列
| プロパティ名 | 意味 |
|---|---|
| screenName | スクリーン名(@に続く名前) |
| createdAt | アカウント作成日時 |
| timeZone | タイムゾーン名 |
| name | 名前 |
| description | 自己紹介 |
| lang | 表示言語 |
| location | 場所(ユーザーが自由に決めれるやつ) |
自己紹介なども取得できるようですね。
色
色はユーザーが設定したテーマの色等ですね。
| プロパティ名 | 意味 |
|---|---|
| profileSidebarBorderColor | 不明 |
| profileLinkColor | 不明 |
| profileSidebarFillColor | 不明 |
| profileTextColor | 不明 |
| profileBackgroundColor | 不明 |
プロパティ名からどこの色のことを言っているのかはなんとなくわかるのですが、あまり意味のない数値だと思います。詳しく調べませんでした。
URL
URLは主に画像のリンク等の文字列がデータとして入っています。
略
オブジェクト
| プロパティ名 | 意味 |
|---|---|
| URLEntity | プロフィールのURLの内容 |
| rateLimitStatus | TwitterAPIのレートリミットオブジェクト |
| status | 最近したツイート |
オブジェクトの中でも最近したツイート以外はたいした意味を持ちません。
最近したツイート
ユーザー情報の中には最近したツイートの内容が付属されています。statusというオブジェクトにツイート情報が入っています。
| プロパティ名 | 意味 |
|---|---|
| inReplyToUserId | リプライ先のユーザーID(リプライでなければ-1) |
| userMentionEntities | メンションの配列 |
| source | ツイートしたアプリの詳細 |
| retweeted | 不明 |
| currentUserRetweetId | 不明 |
| createdAt | ツイート日時 |
| hashtagEntities | ハッシュタグの配列 |
| mediaEntities | 画像等のメディアの配列 |
| inReplyToStatusId | リプライ先のツイートID(リプライでなければ-1) |
| extendedMediaEntities | 画像等のメディアの配列(extended) |
| id | ツイートID |
| text | ツイート本文 |
| lang | ツイート言語 |
| favorited | 不明 |
| retweet | 不明 |
| accessLevel | 不明 |
| URLEntities | URLの配列 |
| truncated | 翻訳されたかどうか |
| quotedStatusId | 引用ツイート元のツイートID(引用していなければ-1) |
| possiblySensitive | 不明 |
| contributors | 不明 |
| retweetedByMe | 不明 |
| symbolEntities | 不明 |
| retweetCount | リツイート数 |
| favoriteCount | いいね数 |
まだ詳細な意味は分かりません。ごめんなさい!
実際に政党別で比べてみる
詳しい比較は後日やります。今日はフォロワーがどれくらい鍵垢かどうかを調べたいと思います。
MongoDBはdb[collection_name]でdb.collection_nameのように扱えます。db.getCollectionNames().forEachですべてのコレクションについてfunction()の中身を実行させます。
> db.getCollectionNames().forEach(function(e){ if(e.match(/_ids$/))return; var all = db[e].count(); var count= db[e].find({protected:true}).count(); print(e +","+count+","+all+","+count/all); } )
| 党名 | スクリーン名 | 鍵垢数 | フォロワー数 | 鍵垢率 | 偏差値 |
|---|---|---|---|---|---|
| 立憲民主党 | CDP2017 | 25722 | 174880 | 0.1470 | 60.68 |
| 民進党 | MinshintoNews | 3257 | 25333 | 0.1285 | 51.24 |
| 社民党 | SDPJapan | 2288 | 21644 | 0.1057 | 39.59 |
| 幸福実現党 | hr_party_TW | 874 | 6753 | 0.1294 | 51.68 |
| 共産党 | jcp_cc | 4076 | 36727 | 0.1109 | 42.27 |
| 自民党 | jimin_koho | 16327 | 124317 | 0.1313 | 52.65 |
| 希望の党 | kibounotou | 1795 | 10606 | 0.1692 | 71.98 |
| 公明党 | komei_koho | 9510 | 73702 | 0.1290 | 51.48 |
| 日本のこころ | nipponkokoro | 4047 | 37905 | 0.1067 | 40.12 |
| 維新の会 | osaka_ishin | 1807 | 13705 | 0.1318 | 52.91 |
| 自由党 | seikatsu1pr | 2750 | 28240 | 0.0973 | 35.34 |
| 名称 | 値 |
|---|---|
| 平均 | 0.1261 |
| 標準偏差 | 0.019611 |
フォロワーの鍵垢率が高い政党は希望の党,立憲民主党,維新の会ですね。偏差値で見ると希望の党と立憲民主党が明らかに高いことが分かります。逆に鍵垢の率が極端に低い自由党や社民党も目立ちます。
比較する値がbool値だとこんな感じに楽にできますね!

終わりに
ここまで読んでくださってありがとうございます!
Twitterのユーザー情報の取得が完了しました!これからデータを分析していきたいと思います。もしかしたら、2・3日かかるかもしれません。いいデータ取れるといいんですが…
またね('ω')ノ