#python #tweepy
#python #tweepy
Вопрос:
Я придумал следующий код, который перебирает кучу дат и транслирует твиты, используя twitters full_archive_search. Обратите внимание, что я использую бесплатную версию песочницы для доступа к прошлым твитам, которая разрешает 50 запросов в месяц. Проблема, с которой я сталкиваюсь, заключается в том, что я хочу получать доступ к более чем 100 твитам в день. (Поиск выдает только 100 твитов / результатов только с первой страницы, как мне получить доступ ко второй странице и так далее?) После обращения к документации tweepy у меня такое ощущение, что этим можно управлять с next
помощью параметра. Но я понятия не имею, как это использовать.
import tweepy as tw
from datetime import date,timedelta
from dateutil.relativedelta import relative delta
# Create a range of dates
start_date = date(2020,1,1)
end_date = date(2020,1,31)
date_range = [start_date timedelta(days = i) for i in range(relativedelta(end_date,start_date).days)]
dates_str =[i.strftime('%Y%m%d%H%M') for i in date_range]
# Autenticate twitter
auth = tw.OauthHandler(
consumer_key = ???
consumer_secret = ???
)
api = tw.API(auth)
df_list = []
# Iterate over each date and extract maximum of 100 tweets per date. How do I increase this number?
for dt_idx, dt in enumerate(date_str):
if dt_idx < len(dates_str) - 1:
twObj = api,search_full_archive(
environment_name = ???,
query = '#Taal',
fromDate = dates_str[dt_idx],
toDate = dates_str[dt_idx 1],
)
#iterate over the tweet object and save tweet text
tweet_list = []
for tweet in twObj:
tweet_list.append(tweet.text)
#append the tweet_list to df_list
df_list.append(tweet_list)
Мне интересно, как добавить next
параметр внутри объекта tweet для извлечения более 100 твитов за дату? есть идеи?
Ответ №1:
Что я бы сделал, так это использовал user_timeline для этого, вы также столкнетесь с той же проблемой, связанной с разбиением на страницы. Чтобы решить эту проблему, вы используете «.Cursor»
Итак, как вы могли бы запустить его в своем коде:
tweet_list = []
for tweet in twObj:
tweepy.Cursor(api.user_timeline, screen_name = "", count = 200, tweet_mode
= 'extended').items
Вот функция, которую я лично использовал, я предпочитаю запускать функцию только один раз, а затем запускать ее при вызове. Я думаю, что это чище, и вы можете проверять наличие ошибок, не позволяя циклу функции.
def extract_tweets(userid):
all_tweets = []
tweets = tweepy.Cursor(api.user_timeline,screen_name = userid,
count = 200,
tweet_mode = 'extended').items()
Дайте мне знать, если у вас возникнут какие-либо ошибки