この企画を思いついた経緯↓
- TwitterAPIを使った企画がやりたくなった
- Pythonの勉強にもなると思った
- バズるツイートを調査・分析したいと思ったから
次に設計。
- TwitterAPIを使って、検索ワードが含まれているツイート文を取得する。
- その中からファボ数が多い順にデータとして取得(データ数は10〜20)
- 取得したデータ(ID)からツイート文を出力
設計はこんな感じでいいでしょう。
では、コーディングしていきます。
コーディング内容
データを扱うのでPycharmでやるよりもJupyter Notebookなどを利用した方がいいですね。今回はどちらも使用しましたが、Pycharmの方のコーディングを載せておきます。
<main.py>
import json
import config
import pandas as pd
from requests_oauthlib import OAuth1Session
CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
AS = config.ACCESS_SECRET
twitter = OAuth1Session(CK, CS, AT, AS)
url = "https://api.twitter.com/1.1/search/tweets.json"
serch_word = str(input())
params = {'q': serch_word, "count": "10"}
results = twitter.get(url, params=params)
results = json.loads(results.text)
data_raw = pd.DataFrame(results['statuses'])
data_new = data_raw[['text', 'favorite_count', 'retweet_count']]
data_sorted = data_new.sort_values('retweet_count', ascending=False)
data_sorted.to_csv('/Users/shintakumi/document/csv/twitter_data3.csv')
<config.py>
CK = "xxxxx"
CS = "xxxxx"
AT = "xxxxx"
AS = "xxxxx"
config.pyを別ファイルで作る必要はありませんが、少しでも見やすいように別ファイルに作っておきました。
検索するワードは「serch_word」変数の中に入れておきます。なんでも検索できるようにinput()を利用しました。パラメータの中に文字を入れなきゃなのでStr型にキャストするのを忘れずに。
パラメータは何があるのかは公式リファレンスにいろいろとあるみたいですね。他には地理的情報を取得できたりID検索したりなど。今回は「’q’」と「’count’」を使用しました。qはクエリのことで必須パラメータとなっています。
pdはpandasのことです。データを大量に扱うデータサイエンス等に頻繁に用いられるライブラリとなっています。UdemyでもPandasを説明していた箇所があったのでまた勉強したいです。
DataFrameやsortをうまく使うことで簡単にデータを整理することができます。データを扱ってTwitter分析する時などには重宝する技術ですね。
学んだこと
from requests_oauthlib import OAuth1Session
前回はこれでスムーズに認証ライブラリを利用することができていましたが、今回はなぜか引数4つにしてしまうと引数超えエラーが吐き出されました↓
TypeError: get() takes 0 positional arguments but 4 were given.
つまり引数は0個しかとらないよ!という意味になります。
おかしいなと調べていたところ、そのような解決策が落ちてなかったのでoathlibのバージョンを落としてみました。するとバージョン1.0.0で動作できました。
困ったときはバージョンを疑ってみるのは良さそうですね。
data_new.sort_values(‘retweet_count’, ascending=False)
これもPandas特有ソートメソッドですね。
sort_values()でデータを整理することができます。asecending = Falseとすることで降順にソートできます。昇順ならTrueを指定するだけ。
データ保管の際は頻繁に使いそうなので覚えておいて損はない気がする。
favorite_countだけカウントされないバグ?
データ内の要素を取り出したときにfavorite_countだけカウントが0の状態で摘出されるバグが発生しました。
ファボ数順にソートしたかったのですが今回は仕方なくリツイート順でソートすることに。
翌日やってみましたが、ファボ数もちゃんと取得できていたのでおそらくバグだったと思います。
企画を通しての所感
Twitter検索ワードからファボ順にソートできたことが素直に嬉しかった。
大量にツイートを取得できればマーケティングなどには活かせるんじゃないかな〜と行ったところ。だが、個人的に利用することはないだろう。
世の中には自動ツイートBotなどのアプリケーションがあるので、それに似たような差サービスを作れれば需要はありそうな気がします。
次回は「指定ワードを含むツイートに自動ファボする機能」を実装したいと思います。ファボするとフォロワーも増えるのでSNSマーケターには需要ありそうな機能だとは思います。