我写过这个剧本:
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>
提前致谢。
答案 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,而不是 屏幕名称。