Как получить твиты недельной давности с помощью Tweepy в API 3.9

#python #twitter #tweepy

#python #Twitter #tweepy

Вопрос:

 import tweepy,re,json,matplotlib.pyplot as plt, seaborn as sns,pandas as pd
from textblob import TextBlob
  
 consumer_key = "key"
consumer_secret = "key"
access_key = "key"
secret_key = "key"
autenticacion = tweepy.OAuthHandler(consumer_key, consumer_secret)
autenticacion.set_access_token(access_key, secret_key)
"""Variable donde voy a llamar a la API"""
api = tweepy.API(autenticacion, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
  
 results = tweepy.Cursor(api.search, q='Panamá', tweet_mode="extended",lang="en",since='2020-11-12',until='2020-11-18').items(2000)
term = 'Panamá'
json_data = [r._json for r in results]
df = pd.io.json.json_normalize(json_data)
  

Я пытаюсь извлечь тысячу твитов с сегодняшней даты неделю назад, но все твиты, которые я извлекаю, относятся к сегодняшней дате. Как мне равномерно извлекать твиты с датами от недели назад до сегодняшнего дня?

Ответ №1:

Сам API Twitter не поддерживает равномерное распределение результатов на ежедневной основе в течение недели, поэтому вам придется реализовать это самостоятельно. Параметр count поддерживает не более 100 результатов на страницу. На данный момент ваш код в основном запрашивает 100 твитов, оглядываясь назад.

Вы можете попробовать следующее:

  • разбейте ваши 1000 результатов на 7 дней (чтобы упростить задачу, давайте сделаем это 100 раз в день, итого 700 твитов)
  • создайте цикл в 7 проходов вокруг вашего второго блока кода и для каждой итерации выполняйте поиск по 100 результатам, каждый раз создавая значения since и until для того же дня, так '2020-11-12' '2020-11-12' , '2020-11-13' чтобы '2020-11-13' , и т. Д
  • на каждой итерации цикла добавляйте свои данные в dataframe

Также обратите внимание, что строка, в которой у вас term = 'Panamá' есть, по-видимому, не используется в приведенном выше коде.