0

我写了这个脚本:

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>

提前致谢。

4

1 回答 1

2

我想知道您tweetstream最初是如何开始工作的,因为我所知道的只是基本的用户名/密码访问在一段时间前已被弃用。现在 Twitter 只允许 OAuth 访问。


回到你的问题,你的FileStream电话是完全有效的。看看FileStream类的实现,你就会明白为什么了。

以下是类中的几行代码,FilterStream在此处获得

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)应该工作。因为如您所见,只有 3 个强制参数__init__。(自我,用户名,密码)。

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


但是,正如您在错误中所说,FilterStream构造函数 intweetstream至少需要 5 个参数。

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

正如它所说,尝试使用这个初始化,

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

据消息人士透露,

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

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

  • Follow 返回引用给定用户的状态。参数应该是 twitter 用户 ID 的可迭代。ID 是用户 ID 整数,而不是屏幕名称。

于 2013-10-15T12:34:04.713 回答