はじめに
今回はPythonで
Python Twitter Tools (https://github.com/sixohsix/twitter)
というものを使って、TwitterAPIにアクセスしてみたものを載せておきます。
Twitter Developerへの登録
https://syncer.jp/Web/API/Twitter/REST_API/
が参考になります。
というか普通にAPIを叩く場合はここを見ればいけそう
Python Twitter Tools
https://github.com/sixohsix/twitter
でダウンロードします。
python setup.py install
でインストールできます。
Twitterクラス
from twitter import Twitter, OAuth
でインポートした後に、
t = Twitter(auth=OAuth(
<access token>,
<access token secret>,
<consumer key>,
<consumer secret>
))
でTwitterクラスを作ります。
このクラスを使って色々とTwitterのデータを取ることができるようになります。
例えば
searchTweets = t.search.tweets(q = "Qiita")
で「Qiita」についてのTweetを取得することができます。
friends = t.friends.ids()
で「自分のアカウント」がフォローしてるユーザのID群を取得できます。
なお出力結果は大変長いため載せませんが
https://dev.twitter.com/rest/public/rate-limits
に全て書いてあります。
サンプル:自分のフォローしてる人の情報を取得
remain = True
next_cursor = 0
while remain:
friendsInfo = t.friends.list(cursor=next_cursor)
for user in friendsInfo['users']:
friendsNameList.append({
'NumberID':user['id'],
'userID':user['screen_name'],
'userName':user['name']
})
next_cursor = friendsInfo['next_cursor']
if(next_cursor == 0):
remain = False
print('Finish search')
TwitterAPIは一度に大量のデータにアクセスできず、代わりにcursorという方法をとっています。これは端的に言えば、各々のアクセスの時に「どこからデータを取り始めるか」ということを示すものです。
つまりfriends.listのcursor引数は、データを取り始める場所を指定していることになります。各ユーザデータにはnext_cursorというデータが入っており、それを次の引き数に持ってくれば、次々と新しいデータを取り込んでくれます。
サンプル2 あるユーザのTweetを取ってくる
remain = True #ループ判定
userTweets = [] #tweetの格納先
max_id = <一番新しいtweetID>
remainNum = 0
numberOfTweets = 500 #取ってくるtweetの数
count = 200 #一度のアクセスで何件取ってくるか
while remain:
aTimeLine = t.statuses.user_timeline(user_id = <誰かのTwitterID番号>, count=count, max_id=max_id)
for tweet in aTimeLine:
userTweets.append(tweet['text'])
max_id = aTimeLine[-1]['id']-1
remainNum = numberOfTweets - len(userTweets)
count = remainNum
if len(userTweets)+1 > numberOfTweets:
print('finish search')
remain = False
max_id というのは先程のcursorと同じような使い方です。一度の全部取ってこれないので、TweetのIDを参照して取る場所を指定します。ちなみにこのコードは500件キレイに取るための初心者コード丸出しです・・・。 あと500件以下しかtweetしてないアカウントの場合アウトですね。
一応勉強の経過として載せておきます。
終わりに
色々なデータがあるTwitterですが、APIの制限は結構きつかったりします。けど、そのやり方さえ覚えてしまえば、後はドキュメントを参照すればほしいデータは取れる気がします。
Python Twitter Tools Github
Twitter Developer ドキュメント
cursorの説明