twitter APIにアクセスして情報取得
やりたいこと
Twitterのユーザー情報を取得してきたい。Pythonで!
PythonのTwitter APIライブラリを使う
python-twitterを使えば、非常にお手軽にapiを利用できる。
なので、以前からちょいちょい利用していたのだが、最近、試してみたら、あれ!?ユーザーの属性情報が取得できなくなっとる!
最新版にしてみたが、やっぱり取得できず・・・
APIの仕様が変わったんやろうか。
しかたがないので、別の方法を試す。
OAuth認証して、直接Twitter APIに接続する
要は、Twitterが公開しているAPIに接続できればいいのだ。
なので、
1 OAuth認証だけpythonライブラリを使って認証を通す
の手順で、情報は取得できる。
使うモノ
- requests_oauthlib ライブラリ
- twitter application用のconsumer key, consumer secret, token key, token secret
※ consumer key, consumer secret, token key, token secret の取得方法はここのわかりやすい説明とか
で、以下のコードを書いてみた
#! /usr/bin/python
# -*- coding:utf-8 -*-
# Twitter API manual https://dev.twitter.com/docs/api/1.1
from requests_oauthlib import OAuth1Session
import codecs, json
def GeneralApiTemplate(api_page, params):
"""
OAuth認証を利用して、twitetr APIに接続して、jsonを取得する
"""
# ここの下を書き換えてちょんまげ
ck='consumer key'
cs='consumer secret'
tk='token key'
ts='token secret'
twitter=OAuth1Session(ck, cs, tk, ts)
req=twitter.get(api_page, params=params)
if req.status_code==200:
result_map=json.loads(req.text)
return result_map
else:
print ("Error: %d" % req.status_code)
def GetFollowers(screen_name):
"""
特定のuserのfollowerを取得する
"""
params={'cursor':-1,
'skip_status':True,
'screen_name':screen_name,
'include_user_entities':False,
'count':200}
api_page_base='https://api.twitter.com/1.1/followers/list.json'
followers_map=GeneralApiTemplate(api_page_base, params)
return followers_map
if __name__=='__main__':
followers_map=GetFollowers('kensuke3238')
with codecs.open('./here.json', 'w', 'utf-8') as f:
json.dump(followers_map, f, ensure_ascii=False, indent=4)
基本的に認証に成功してしまえば、apiのアドレスとパラメータを変更するだけで、Twitter APIが提供しているものは全部、取得できると思う。たぶん。
あとは、Twitter APIページを参照あれ