Как получить твиты с твитера используя 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 возвращает статусы, которые ссылаются на данных пользователей. Аргумент должен быть повторяемым идентификатором пользователя в твиттере. Идентификаторы - это ИД пользователя, а не имена.