使用tweepy访问Twitter的流式API

2024-09-29 03:25:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前在获取使用tweepy访问Twitter流式API以正确运行的示例代码时遇到问题(呃…或者至少我希望它如何运行)。我使用的是最近从GitHub(标记为1.9版)和Python 2.7.1复制的tweepy。

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

  1. 奥利回答代码:How to Capture Tweets in Real-time with Twitter's Streaming API

  2. 安德鲁·罗宾逊的博客:Using Tweepy to access the Twitter Stream

  3. GitHub上的Tweepy示例库(正如Andrew Robinson所做的,可以很容易地修改以支持OAuth身份验证):streamwatcher.py

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

我怀疑tweepy的流类出于某种原因没有调用自定义回调方法。我在每个示例中尝试重写回调方法,以便在调用它们时生成输出,这似乎证实了这一点。这是一个非常简单的测试代码,基于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)

我做错什么了?


Tags: key代码selftoken示例secretaccessconsumer