我目前无法获取使用 tweepy 访问 Twitter 的 Streaming API 的示例代码以正确运行(呃……或者至少是我期望它如何运行)。我正在使用 GitHub 上最近克隆的 tweepy(标记为版本 1.9)和 Python 2.7.1。
我尝试了来自三个来源的示例代码,在每种情况下都使用“twitter”作为跟踪的测试术语:
奥里利答案代码:如何使用 Twitter 的 Streaming API 实时捕获推文 http://answers.oreilly.com/topic/2605-how-to-capture-tweets-in-real-time-with-twitters-streaming-api/
安德鲁·罗宾逊的博客:使用 Tweepy 访问 Twitter Stream http://andrewbrobinson.com/2011/07/15/using-tweepy-to-access-the-twitter-stream/
GitHub 上的 Tweepy 示例存储库(正如 Andrew Robinson 所做的那样,可以轻松修改以支持 OAuth 身份验证):streamwatcher.py
在所有三种情况下,我都得到相同的结果:身份验证成功,没有产生错误,并且主程序循环似乎正在执行,没有任何问题。我看到网络使用率跃升至约 200KB/s,并且 python 进程的 CPU 使用率跃升至接近 100%,因此我认为正在接收数据。但是,控制台没有输出任何内容。
我怀疑 tweepy 的 Stream 类由于某种原因没有调用自定义回调方法。我尝试重写每个示例中的回调方法以产生输出whenever他们被称为,这似乎证实了这一点。这是基于 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)
我究竟做错了什么?
我也遇到了这个问题,并通过将 Streaming.py 中的第 160 行更改为
if delimited_string.strip().isdigit():
这似乎是 Tweepy 中的一个已知问题/错误 - 在进行所有调试之前应该检查问题列表:) -
https://github.com/tweepy/tweepy/pull/173 https://github.com/tweepy/tweepy/pull/173
https://github.com/tweepy/tweepy/pull/182 https://github.com/tweepy/tweepy/pull/182
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)