使用tweepy访问Twitter的流API

6
我目前在使用tweepy访问Twitter的Streaming API方面遇到了一些问题,无法正确运行(或者至少不符合我的期望)。我使用的是来自GitHub的最新克隆版本的tweepy(标记为版本1.9)和Python 2.7.1。
我尝试了三个来源的示例代码,在每种情况下都使用“twitter”作为跟踪测试词:
1. O'Rilley Answers 代码:如何使用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)

我做错了什么?
1个回答

11

谢谢!!! 运行得很好。另外,感谢您建议检查 GitHub 上的问题列表 - 那可能是我真正需要知道的内容;-) - Morris Cornell-Morgan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接