twitter APIにアクセスして情報取得

やりたいこと

Twitterのユーザー情報を取得してきたい。Pythonで!

PythonTwitter APIライブラリを使う

python-twitterを使えば、非常にお手軽にapiを利用できる。

なので、以前からちょいちょい利用していたのだが、最近、試してみたら、あれ!?ユーザーの属性情報が取得できなくなっとる!

最新版にしてみたが、やっぱり取得できず・・・

APIの仕様が変わったんやろうか。

しかたがないので、別の方法を試す。

OAuth認証して、直接Twitter APIに接続する

要は、Twitterが公開しているAPIに接続できればいいのだ。

なので、

1 OAuth認証だけpythonライブラリを使って認証を通す

2 APIページからjsonを直接取得

の手順で、情報は取得できる。

使うモノ

  • 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ページを参照あれ