Как получить твиты с твитера используя tweetstream python

Я написал этот сценарий:

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 ответ

Мне интересно как у тебя получилось 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__, (self, имя пользователя, пароль).

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


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

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

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

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

По словам источника,

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

  • Трек определяет ключевые слова для отслеживания. Аргумент должен быть итерируемым из строк.

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

Другие вопросы по тегам