使用tweepy访问Twitter的Streaming API

Mor*_*gan 6 python twitter tweepy

我目前无法获得使用tweepy来访问Twitter的Streaming API以正确运行的示例代码(错误......或者至少我希望它如何运行).我正在使用最近的GitHub(标记为1.9版)和Python 2.7.1的tweepy克隆.

我尝试了三个来源的示例代码,在每种情况下使用"twitter"作为跟踪的测试术语:

  1. O'Rilley答案代码:如何使用Twitter的Streaming API实时捕获推文

  2. Andrew Robinson的博客:使用Tweepy访问Twitter Stream

  3. GitHub上的Tweepy示例存储库(正如Andrew Robinson所做的那样,可以轻松修改以支持OAuth身份验证):streamwatcher.py

在所有三种情况下,我得到相同的结果:身份验证成功,没有产生错误,并且主程序循环似乎正在执行没有任何问题.我看到网络使用率跳到大约200KB/s,并且python进程跳到接近100%的CPU使用率,所以我认为正在接收数据.但是,没有任何内容输出到控制台.

我怀疑tweepy的Stream类由于某种原因没有调用自定义回调方法.我已经尝试重写每个示例中的回调方法,以便在调用生成输出,这似乎证实了这一点.这是一个非常简单的测试代码,基于Andrew Robinson的博客条目(当然,删除了我的应用程序的密钥):

# -*- coding: utf-8 -*-

import tweepy

consumer_key = ''
consumer_secret = ''

access_token_key = ''
access_token_secret = ''

auth1 = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth1.set_access_token(access_token_key, access_token_secret)

class StreamListener(tweepy.StreamListener):
    def on_status(self, tweet):
        print 'Ran on_status'

    def on_error(self, status_code):
        print 'Error: ' + repr(status_code)
        return False

    def on_data(self, data):
        print 'Ok, this is actually running'


l = StreamListener()
streamer = tweepy.Stream(auth=auth1, listener=l)
#setTerms = ['hello', 'goodbye', 'goodnight', 'good morning']
setTerms = ['twitter']
streamer.filter(track = setTerms)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

geo*_*emp 10

我也遇到了这个问题,并通过将streaming.py中的第160行更改为,将其修复到我当地的结帐中

if delimited_string.strip().isdigit():
Run Code Online (Sandbox Code Playgroud)

这似乎是Tweepy中已知的问题/错误 - 应该在进行所有调试之前检查问题列表:) -

https://github.com/tweepy/tweepy/pull/173 https://github.com/tweepy/tweepy/pull/182