如何使用tweetstream python从tweeter获取推文

时间:2013-10-15 12:17:24

标签: python-2.7 tweetstream

我写过这个剧本:

import tweetstream   
import pymongo  
connection = pymongo.Connection("mongodb://localhost:27017")  
db = connection.socialdata  
words = ["social media", "innovation", "cloud computing"]  
with tweetstream.FilterStream('username', 'password', track=words) as stream:  
    for tweet in stream:         
        db.tweets.save(tweet)

但是在执行时我遇到以下错误请告诉我如何删除此错误:

Traceback (most recent call last):
    File "tweet.py", line 9, in <module>
        with tweetstream.FilterStream(username, password, track=words) as stream:
TypeError: __init__() takes at least 5 arguments (4 given)</module>

提前致谢。

1 个答案:

答案 0 :(得分:2)

我想知道你是如何让tweetstream首先工作的,因为据我所知,基本的用户名/密码访问时间是deprecated。现在Twitter只允许OAuth访问。


回到你的问题,你的FileStream电话完全有效。查看FileStream类实现,您就会明白原因。

以下是来自FilterStream类的几行代码here

def __init__(self, username, password, follow=None, locations=None,
                 track=None, catchup=None, raw=False, timeout=None, url=None):
        self._follow = follow
        self._locations = locations
        self._track = track
        # remove follow, locations, track
        BaseStream.__init__(self, username, password,
                            raw=raw, timeout=timeout, url=url)

所以,tweetstream.FilterStream("username", "password", track=words)应该有效。因为正如您所看到的,__init__只有3个必填参数。 (自我,用户名,密码)。

所有其他人都是可选的。请注意,此代码来自tweetstream 1.1.1,我认为最新版本已发布。


但是,如您的错误所述,FilterStream中的tweetstream构造函数至少需要5个参数。

This文档提供了您尝试执行的操作的示例。

如上所述,请尝试使用此初始化,

with tweetstream.FilterStream("username", "password", track=words,
                               follow=people, locations=locations) as stream

根据消息来源,

  • 地点是带有地理标记的推文的边界框列表 应该起源。参数应该是可迭代的 经度/纬度对。

  • 跟踪指定要跟踪的关键字。参数应该是可迭代的 字符串。

  • 遵循引用给定用户的返回状态。争论应该 是一个可迭代的Twitter用户ID。 ID是userid int,而不是 屏幕名称。