twitterからデータを取ってくる[python]
pythonを使ってtwitterからデータを取ってくる方法について書きたいと思います.
twitter開発者に登録
まずtwitter developerに登録する登録する必要が有ります.また,twitterのアカウントに電話番号を紐付けてないと登録することができないので注意が必要です.
登録するときはhttps://dev.twitter.com/にアクセスし下の方のTOOLSのManage Your Appsから登録します.
また、keys and access tokesでaccess tokenを発行する必要があります。tweepyのインストール tweepyさん優秀です。pipから簡単にインストールできます。
pip install tweepy
コード 読み込んだデータをファイル出力してますが標準出力することも可能です
#! /usr/bin/env python # -*- coding: utf-8 -*- import tweepy import json import codecs from datetime import datetime """ tweepyの詳細は http://www.tweepy.org/ コードはgithubを参照 https://github.com/tweepy/tweepy/blob/v3.2.0/docs/index.rst """ #jsonのdatetimeエラー対策 def support_datetime_default(o): if isinstance(o, datetime): return o.isoformat() raise TypeError(repr(o) + " is not JSON serializable") #キーワードに対してtweetを読み込む def connect_tw(): #CK,CS,AT,ASはtwitterの開発者コード CK = '' #Consumer Key CS = '' #Consumer Secret AT = '' #Access Token AS = '' #Accesss Token Secert #twitterにアクセスする処理 auth = tweepy.OAuthHandler(CK, CS) auth.set_access_token(AT, AS) api = tweepy.API(auth) #keywordは任意 keywords = u' テスト' #リストを用意する list = [] #ツイートを取得しjson形式で書き込む for tweet in tweepy.Cursor(api.search, q=keywords).items(100): person = { u"user_id": tweet.user.id, u"screen_name": tweet.user.screen_name, u"description": tweet.user.description, u"created_at": tweet.created_at, u"text": tweet.text } list.append(person) return list #json形式でファイルを作成する def output_data(docs): d = datetime.now() filePath = datetime.strftime(d, "getTweet%Y-%m-%d-%H%M.json") f = codecs.open(filePath, 'w', 'utf-8') #収集されたデータをJSONファイルに格納する json.dump(docs, f, default=support_datetime_default, indent=4, ensure_ascii=False) f.close() def main(): print 'get tweet' text = connect_tw() output_data(text) if __name__ == "__main__": main()
- 最後に tweepyさん優秀だけどstreamingAPI系が動かないので注意が必要です! streamingAPIについては後日書きたいと思います。