PythonでTwitterからツイートを取得してみよう

2015.3.16

python-logo-master-v3-TMせっかくMac持ってるならPythonを。という連載なんですが、ゆくゆくはカテゴリーを分けたほうがいいのかなぁとかなんとか。今回はPythonでTwitterからツイートを取得してみましょう。既に多くのブログでやりかたは明快に出ているのですが、まぁお遊びから学ぶPythonということでやってみましょう。

まずはTwitterのモジュールをインストールしよう

今回はPython-twitterを使用しますからターミナルを起動しインストールしましょう。


$ sudo pip install python-twitter

Twitter Developersからキーを取得しよう

https://dev.twitter.com/

上記URLからキーを取得しましょう。TwitterのWEB版から既にログインを済ませておくと楽だとか何とか。画面下の方の「Manage Your Apps」をクリックしましょう。

twitdev

そうするとこんな画面で入力を開始します。*印のところだけ入力すればよいです。

入力画面

Name:アプリケーションの名前を入力。他に使ってる人がいたらエラー出ます
Description:アプリ概要 分かる範囲で
Website:あなたのWebサイトURLを入れておきましょう

以上で完了。簡単!

そうすると 「Key and Access Tokens」のタブをクリックして、ページ下の方でCreateをクリックすれば、

Consumer Key (API Key)
Consumer Secret(API Secret)
Access Token
Access Token Secret

の4項目の情報が出てきますので、これをメモメモしておきましょう。絶対に外部に漏らしてはダメですよ。

twitkey.pyファイルを作ろう

認証キーは別ファイルで作って、importしてやると楽ちんです。


twkey = {
    "cons_key": "******************************",
    "cons_sec": "******************************",
    "accto_key": "******************************",
    "accto_sec": "******************************"
}

変数名は仮にtwkeyとしてみました。もっと分かりにくい変数名のほうが安全なのかどうか。このファイルをtwitkeyという名前をつけて保存します。

実行ファイルを作ろう

では実際に動作させるスクリプトを書いていきましょう。


#!/usr/bin/env python
# coding: utf-8
 
import twitter
import twitkey
 
CONSUMER_KEY = twitkey.twkey['cons_key']
CONSUMER_SECRET = twitkey.twkey['cons_sec']
ACCESS_TOKEN_KEY = twitkey.twkey['accto_key']
ACCESS_TOKEN_SECRET = twitkey.twkey['accto_sec']
 
api = twitter.Api(consumer_key=CONSUMER_KEY,
                  consumer_secret=CONSUMER_SECRET,
                  access_token_key=ACCESS_TOKEN_KEY,
                  access_token_secret=ACCESS_TOKEN_SECRET)
tweets = api.GetSearch(term=u"#今日")
for tweet in tweets:
    print(tweet.text)

ものすごくシンプルですね。このファイルをtwitprint.pyとして保存しましょう。シェルからcdで移動して動かしましょう。


$ cd pyworks

$ python twitprint.py

動きましたか?ではスクリプトの中身を解説していきましょう。

中身解説


#!/usr/bin/env python #おまじない
# coding: utf-8 #UTF-8ですよという宣言
 
import twitter #twitterのモジュールをインポートします
import twitkey #さきほど作った認証キーが入ったファイルをインポートします
 
CONSUMER_KEY = twitkey.twkey['cons_key'] #ここから下4行にtwitkey.pyの内容を読めという指令を書いてます
CONSUMER_SECRET = twitkey.twkey['cons_sec']
ACCESS_TOKEN_KEY = twitkey.twkey['accto_key']
ACCESS_TOKEN_SECRET = twitkey.twkey['accto_sec']
 
api = twitter.Api(consumer_key=CONSUMER_KEY, #これはTwitterAPIに使う箇所なのでまる覚えで
                  consumer_secret=CONSUMER_SECRET,
                  access_token_key=ACCESS_TOKEN_KEY,
                  access_token_secret=ACCESS_TOKEN_SECRET)
tweets = api.GetSearch(term=u"#今日") # (term=u"#今日") のとこは日本語なのでユニコードを表す u が要ります
for tweet in tweets: #tweetsの内容があれば以下を実行しろという命令です
    print(tweet.text) #textでプリントしろという命令です

tweets = api.GetSearch(term=u"#今日")

この箇所を書き換えると色々取得できますね。

tweets = api.GetFavorites()

でお気に入りを調べたり。api.GetFavorites(id=*****)とかで特定ユーザーのを取得。
デフォルトの引数はあなた自身になってるはず。

TLの取得はこんな感じ。

tweets = api.GetHomeTimeline()

リプライ取得はこんな感じになってます。

tweets = api.GetMentions()