pythonでTwitter APIを使ってみた
はじめに
どうも、こじまるです。
『Twitterの情報を解析してみたい、自動で投稿してみたい』などと悩んでいませんか?そんな方に向けて、『pythonを使ってTwitter APIで自動投稿、指定ワードで検索する』ための方法を記事にまとめました。
本記事で紹介する方法を実践すれば、pythonを使ってTwitterに投稿すること、指定ワードでの検索をすることができます。
Twitter APIを使ってみた
Twitter APIとは
Twitter APIとは、Twitterが提供しているWeb APIになります。Twitter APIを通して、Tweetの投稿やTweetされた情報の取得などができます。
Twitter APIの始め方
上記手順は説明を割愛させていただきます。下記記事に詳細に書かれていますので、こちらを参照ください。
digitalnavi.net
環境設定
pythonでTwitter APIをコールするために、requestsを使用します。requestsがインストールされていない場合にはpipを使ってインストールしてください。
pip install requests
Twitter APIでTweetの投稿
Tweetを投稿するAPIとして、下記を使用します。APIの仕様書はこちらから確認できます。
TweetはOAuth1.0aで認証します。下記のようにTokenを取得しました。
""" settings.py """ ACCESS_TOKEN = "xxxxxxxxxxxx-xxxxxxxxxxxx" ACCESS_TOKEN_SECRET = "xxxxxxxxxxxx" CONSUMER_KEY = "xxxxxxxxxxxx" CONSUMER_SECRET = "xxxxxxxxxxxx"
認証のために、OAuth1Sessionを使用します。
import requests from requests_oauthlib import OAuth1Session twitter = OAuth1Session(settings.CONSUMER_KEY,settings.CONSUMER_SECRET,settings.ACCESS_TOKEN,settings.ACCESS_TOKEN_SECRET)
message = "Twitter API test" params = {"status":message} endpoint = "https://api.twitter.com/1.1/statuses/update.json" res = twitter.post(endpoint,params=params)
ソースコード
全体のソースコードは下記の通りです。
import json import requests import settings from requests_oauthlib import OAuth1Session if __name__ == '__main__': message = "Twitter API test" params = {"status":message} endpoint = "https://api.twitter.com/1.1/statuses/update.json" twitter = OAuth1Session(settings.CONSUMER_KEY,settings.CONSUMER_SECRET,settings.ACCESS_TOKEN,settings.ACCESS_TOKEN_SECRET) res = twitter.post(endpoint,params=params) json_res = res.json() print(json.dumps(json_res,indent=4,sort_keys=True,ensure_ascii=False))
Twitter APIでTweetを検索する方法
Twitter APIでTweetの検索
最近のTweetを検索するAPIを使用します。
Bearer Tokenが使用できるので、そちらを使用します。
bear_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" headers = {"Authorization":"Bearer {}".format(bear_token)}
今回は『Python』を文字列に含むTweetを検索するようにしました。
query = "Python -is:retweet" tweet_fields = "tweet.fields=author_id" endpoint = "https://api.twitter.com/2/tweets/search/recent?query={}&{}".format(query,tweet_fields) res = requests.get(endpoint,headers=headers)
ソースコード
全体のソースコードは下記の通りです。
import json import requests import settings from requests_oauthlib import OAuth1Session if __name__ == '__main__': bear_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" headers = {"Authorization":"Bearer {}".format(bear_token)} query = "Python -is:retweet" tweet_fields = "tweet.fields=author_id" endpoint = "https://api.twitter.com/2/tweets/search/recent?query={}&{}".format(query,tweet_fields) res = requests.get(endpoint,headers=headers) json_res = res.json() print(json.dumps(json_res,indent=4,sort_keys=True,ensure_ascii=False))
実行結果
下記が実行結果になります。事前に投稿したTweetが取得できることが確認できました。