Поиск твита пользователя с отфильтрованным словом в python

avatar
yagci
8 августа 2021 в 18:50
41
2
1

Я хочу получать только отфильтрованные твиты, но получил эту ошибку. Как я могу это решить? Что означает эта ошибка?

tweets = api.user_timeline(screen_name = "elonmusk", count = 200000, lang = "en", tweet_mode = "extended")

word="Dogecoin"
for tweet in tweets:
    if word in tweet:
        df = pd.DataFrame([tweet.full_text], columns = ["tweet"])

TypeError: аргумент типа "Статус" не является итерируемым

Источник

Ответы (2)

avatar
Bill the Lizard
8 августа 2021 в 19:01
0

Ошибка возникает здесь:

if word in tweet:

Здесь tweet — это объект Status, поэтому вы не можете использовать оператор in для него напрямую. Вы хотите проверить, есть ли слово в тексте твита, поэтому вам нужно сделать это:

if word in tweet.full_text:
yagci
8 августа 2021 в 19:33
0

опять выдает ошибку. ""AttributeError: объект "Статус" не имеет атрибута "текст"""

Bill the Lizard
8 августа 2021 в 20:03
0

@yagci Плохо, я смотрел старую версию документации. Это должно быть tweet.full_text Примечание: Я не получил никаких результатов при поиске "Dogecoin", поэтому я изменил условие поиска на "Starship".

Bill the Lizard
8 августа 2021 в 20:12
0

Дополнительное примечание: API не позволит вам получить 200 000 твитов за один запрос. К сожалению, вам приходится просматривать старые твиты, делая несколько запросов.

avatar
Adam Smooch
8 августа 2021 в 18:56
0

TypeError: argument of type 'Status' is not iterable означает, что вы пытаетесь зациклиться на чем-то, что не зацикливается.

Это предполагает, что возвращаемое значение api.user_timeline() не является списком твитов (как, кажется, ожидает ваш код), а значением типа Status.