2013-10-15 2 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) должен работать. Потому что, как вы видите, есть только 3 обязательных аргумента для __init__. (самостоятельно, имя пользователя, пароль).

Все остальные являются необязательными. Обратите внимание, что этот код относится к tweetstream 1.1.1, который, как мне кажется, выпущен в последней версии.


Однако, как сказал в своей ошибке, FilterStream конструктор в tweetstream занимает минимум 5 аргументов.

This документация дает пример того, что вы пытаетесь сделать.

Как говорится, попробуйте использовать эту инициализацию вместо

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

Согласно источнику,

  • расположений список ограничивающих коробок, в которых геотегами твиты должны возникнуть. Аргумент должен быть итерабельным из пар долготы/широты.

  • В композиции - ключевые слова, которые вы хотите послушать. Аргумент должен быть итерируемым строк.

  • Последующие статусы возвратов, ссылающиеся на данных пользователей. Аргумент должен быть итерируемым идентификатором пользователя Twitter. Идентификаторами являются идентификаторы пользователя, а не имена экранов .

+0

Спасибо за ваш ответ. Но я попробовал то же самое, что и на этой ссылке, все еще получая ту же ошибку, поэтому есть ли другой способ сделать это, пожалуйста, предложите. –

+0

@ShilpaJawale, в какой библиотеке вы точно используете? Потоковый API? –

+0

Я использую библиотеку tweetstream –

Смежные вопросы