ChanLab Report

近況の備忘録ブログ

Python + StreamingAPI (Twitter)

Python、初(?)挑戦。

準備

Python

Pythonエディタとして『PyCharm Community Edition』を導入。

TwitterAPI

StreamingAPIを利用してツイート取得をするには、認証キーが必要。
下記サイトの指示に従い、認証キーの取得・確認を行う。
statsbeginner.hatenablog.com


StreamingAPIでキーワードに関するツイート取得

ソースコード

下記サイトのソースコード丸パクリしてStreamingAPIが動作するかを確認。
[Python]twitterのstreaming APIは日本語によるフィルタリングが未対応。 | Kimux.Net

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import codecs, simplejson, time

from tweepy.streaming import StreamListener, Stream
from tweepy.auth import OAuthHandler
from tweepy.api import API
from datetime import timedelta

def get_oauth():
    # 以下4つのキー等は適宜取得して置き換えてください。
    consumer_key = 'XXXXXXXXXXXXXXXXXXXXXXX'
    consumer_secret = 'XXXXXXXXXXXXXXXXXXXXXXX'
    access_key = 'XXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXX'
    access_secret = 'XXXXXXXXXXXXXXXXXXXXXXX'
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_key, access_secret)
    return auth

class AbstractedlyListener(StreamListener):
    def on_status(self, status):
        status.created_at += timedelta(hours=9)
        text = status.text

        print ("-------------------\n")
        print ("tweet " + str(status.created_at) +"\n")
        print (text + "\n")

if __name__ == '__main__':
    auth = get_oauth()
    stream = Stream(auth, AbstractedlyListener(), secure=True)
    stream.filter(track=["歌舞伎町"])

結果

以下の画像の通りに取得が出来た。
コードを実行した瞬間からリアルタイム取得が始まるため、それ以前のツイートは取得していない。
f:id:changmin1015:20160412170930p:plain





※注意※

simplejsonやTweepyのmoduleがないというエラーが出る場合は、PyCharmのPreferenceからmoduleをインストールする。

検索ワードに日本語を入れて『UnicodeDecodeError: 'ascii' codec can't decode....』を吐く場合は下記のリンク参照。

d.hatena.ne.jp