Twitter APIs
Twitter APIを通してTwitterを利用することができます。
APIを利用するためには、まず、以下で開発者として登録を行います。
https://developer.twitter.com/en/apps
その後、”create an app”を行い、以下の4つのキーを取得します。
- API_KEY
- API_SECRET_KEY
- ACCESS_TOKEN
- ACCESS_TOKEN_SECRET
この4つのキーを用いることで、APIを利用することができます。
そもそもAPIとかOAuthって何?という場合は、以下の説明が大変分かりやすいです。
PythonでTwitter APIを使う
日本語でたくさんのやってみる系の記事があります。
スクラッチで頑張る
oauth部分はライブラリを使う
Pythonでサクッと簡単にTwitterAPIを叩いてみる
APIラッパー
twitterAPIのpythonラッパーは他にもあると思いますが、ざっと見ると下の4つが良く使われるようです。
どの方法でやってみるか悩みますが、githubで一番☆の多いtweepyを使ってみます。
tweepy
公式は以下です。
tweepyを使って、トランプ大統領のtweetを取得してみます。
APIの認証情報を保存
APIの認証情報を保存します。
今回は’credentials_twitter.py’という名前で、以下のファイルを作成します。
# Twitter APIの認証情報. API_KEY = 'xxxxxxxxxxxxxxx' API_SECRET_KEY = 'xxxxxxxxxxxxxxx' ACCESS_TOKEN = 'xxxxxxxxxxxxxxx' ACCESS_TOKEN_SECRET = 'xxxxxxxxxxxxxxx'
ここからは、インタラクティブモードで進めます。
まずは、tweepyと今作成した認証情報を読み込みます。
>>> import tweepy >>> import credentials_twitter
OAuth認証
OAuth認証を行い、apiインスタンスを作成します。
>>> auth = tweepy.OAuthHandler(credentials_twitter.API_KEY, credentials_twitter.API_SECRET_KEY) >>> auth.set_access_token(credentials_twitter.ACCESS_TOKEN, credentials_twitter.ACCESS_TOKEN_SECRET) >>> api = tweepy.API(auth)
たったこれだけの操作で、apiインスタンスを通して、Twitterを操作することができるようになります。
Tweetsの取得
トランプ大統領の最近のtweetを2つ取得してみます。
>>> tweets = api.user_timeline(screen_name='realDonaldTrump', count=2) >>> tweets [Status(_api=<:tweepy.api.API object at 0x000001AC976BD438>, _json={'created_at': 'Tue Jun 11 03:41:17 +0000 2019', 'id': 1138290077740740610, # 省略 possibly_sensitive=False, lang='und')]
良く分からない情報がたくさん出力されました。
tweetはJSON形式で返ってきます。
まずは、API自身のドキュメントを参照して、大体どんな情報があるのか確認します。
次に、pythonのオブジェクトとして、dir
で属性を確認します。
>>> dir(tweets[0]) ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_api', '_json', 'author', 'contributors', 'coordinates', 'created_at', 'destroy', 'entities', 'extended_entities', 'favorite', 'favorite_count', 'favorited', 'geo', 'id', 'id_str', 'in_reply_to_screen_name', 'in_reply_to_status_id', 'in_reply_to_status_id_str', 'in_reply_to_user_id', 'in_reply_to_user_id_str', 'is_quote_status', 'lang', 'parse', 'parse_list', 'place', 'possibly_sensitive', 'retweet', 'retweet_count', 'retweeted', 'retweets', 'source', 'source_url', 'text', 'truncated', 'user']
上の属性を参考に、分かりやすそうな情報を引っ張ってみます。
>>> print(tweets[0].id) 1138290077740740610 >>> print(tweets[0].text) #AmericaFIRST #MAGA�� https://t.co/Ae51wFELD0 >>> print(tweets[0].created_at) 2019-06-11 03:41:17 >>> print(tweets[0].source) Twitter for iPhone >>> print(tweets[0].retweet_count) 3624
CSVファイルに保存する
20個tweetを取得して、いくつかの項目をcsvファイルに保存します。
>>> tweets = api.user_timeline(screen_name='realDonaldTrump', count=20) >>> import csv >>> with open('trump_tweets.csv', 'a') as f: ... writer = csv.writer(f) ... writer.writerow(['id', 'text', 'created_at', 'source', 'retweet_count']) ... for tweet in tweets: ... id = tweet.id ... text = tweet.text.encode('utf-8') ... created_at = tweet.created_at ... source = tweet.source.encode('utf-8') ... retweet_count = tweet.retweet_count ... writer.writerow([id, text, created_at, source, retweet_count]) ... 41 # 省略 226 >>>
無事にcsvファイルに取得した情報が保存できてます。
以下に続きます。