REST APIとStreaming APIがあります。
REST APIは取得回数に制限があり、リアルタイムに更新するような動作はできません。そこで、Streaming APIを用いると、The WorldやYorufukurouみたいに、制限をあまりきにすることもなくリアルタイムにツイートを取得できます。
REST APIについては、
Qiitaー「Python で Twitter API にアクセス」
こちらのサイトがとてもわかり易いです。
ツイートの投稿、検索、タイムライン取得などの操作ができます。
以下、Streaming APIについて。
まず、インストールから。
Tweepyを入れようとしたら、
ImportError: No module named pip.reqと言われ、何のことかと思えば、pipを入れてないからですね
ターミナルで
curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | sudo pythonこれでpipがインストールできます。
(こちらを参考にしました)
よって、
easy_install tweepyこれが実行できるようになり、tweepyがインストールできます
sudo pip install tweepyでもよいです。
そしてtweepyでの開発へ。
を参考にしました。特にデータの表示部分、日本時間への変換、エラー対処です。
Public Streamingのコマンドは
が参考にになります
*ユーザーストリーム
# coding: utf-8
#はるふ's innovation!
import tweepy
from datetime import timedelta
CK = ''                             # Consumer Key
CS = ''         # Consumer Secret
AT = '' # Access Token
AS = ''         # Accesss Token Secert
class Listener(tweepy.StreamListener):
    def on_status(self, status):
        status.created_at += timedelta(hours=9)#世界標準時から日本時間に
        
        print('------------------------------')
        print(status.text)
        print(u"{name}({screen}) {created} via {src}\n".format(
                                                               name=status.author.name, screen=status.author.screen_name,
                                                               created=status.created_at, src=status.source))
        return True
    
    def on_error(self, status_code):
        print('Got an error with status code: ' + str(status_code))
        return True
    
    def on_timeout(self):
        print('Timeout...')
        return True
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
listener = Listener()
stream = tweepy.Stream(auth, listener)
stream.userstream()
表示部分はめじろさんのコードほとんどそのままです…
return Trueをすると、timeoutが発生しても終了しなくなります
* 検索ワードをストリームで流す(Public Streaming)
stream.filter(track=['検索ワード'])最後のstream.userstream()をこれに書き換えるだけです
ただし、こちらを参照してください。
Kimux.Netー「[Python]twitterのstreaming APIは日本語によるフィルタリングが未対応。」
調べたところ、完全に未対応というわけではありませんが、単語がスペースなどで独立している場合は検索可能なようです。よって、ハッシュタグや英単語は検索できそうですが、日本語の文章の内部の検索は無理そうです(REST APIを使うしか・・・)
同じ部分を、
stream.sample()とすると、全世界のツイートの断片が拾われ続けます。すごいスピードで流れて、ある意味楽しいです
ちなみに、ストリームを終了するときはControl + Cで割り込みを発生させると終了させることができます(正しいかどうかはわからない)
 
このコメントは投稿者によって削除されました。
返信削除