2013-10-15 298 views
0

我写了这个剧本获得从高音喇叭的鸣叫:如何使用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> 

提前致谢。

+0

你错过了一个参数。它预计有5个参数,并且你已经给出它4.“tweetstream”,“username”,“password”和“track”。阅读文档以查看缺少的东西 – Paco

+0

我建议使用Twython。 –

回答

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是用户标识,而不是 屏幕名称。

+0

感谢您的回复。但我尝试了同样的链接仍然得到相同的错误,所以有任何其他方式来做到这一点,请建议。 –

+0

@ShilpaJawale,你正在使用什么库?流媒体API? –

+0

我正在使用tweet流库 –