Я знаю, что на этом форуме есть несколько похожих тем, и я пытался просмотреть многие, но мне кажется, что мой конкретный c вопрос не обсуждался и, возможно, это новая проблема / ограничение. Я пытаюсь собрать твиты, содержащие определенные c хэштеги, в пределах определенного c временного интервала. Поскольку это старше 7 дней, мне нужно использовать getOldTweets3. Я попытался использовать HTMLError из URLLIB, но это не сработало, и я продолжал получать ошибку 529. Поэтому я переключился на включение функции сна, чтобы не перегружать вызовы. Но я все еще получаю ошибку 529, и в конце концов я получил ошибку 503 Service Unavailable. Как вы можете видеть в приведенном ниже коде, я попытался увеличить задержку более часа между вызовами, и у меня все еще есть эта проблема. Я не уверен, есть ли способ обойти это? Я не пытаюсь обойти проблему с перегрузкой сервера, просто пытаюсь оставаться в пределах, но я не знаю, каковы ограничения и реалистичны ли они c или слишком низки. Я не думаю, что это проблема браузера? Может это ограничение от провайдера? Я использую Python 3.7 через Anaconda в ОС Linux Ubuntu 18.04. Я надеюсь, что для этого есть решение. Спасибо
Мой пример кода ниже:
import GetOldTweets3 as got
import time
import pandas as pd
import os
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
tweets_array = []
tweet_query = '#coronavirus'
since_date = '2020-02-10'
to_date = '2020-02-12'
since_id = ""
error_count = 0
flag = True
while flag:
tweetCriteria = got.manager.TweetCriteria().setQuerySearch(tweet_query).setMaxTweets(10000).setUntil(to_date).setSince(since_date).setLang('en')
tweets = got.manager.TweetManager.getTweets(tweetCriteria)
#Check if the last available tweet id is the same as the previous last, if so it has reached the limit for that day
if tweets[-1].id == since_id:
print("No further tweets for this day")
flag = False
else:
for x in tweets:
tweets_array.append(x)
since_id = tweets[-1].id
tweet_query = f'\'#coronavirus\' -filter:retweets max_id:{since_id}'
collected_tweets = pd.DataFrame([tweet.__dict__ for tweet in tweets])
# if file does not exist write header
if not os.path.isfile('tweet_data.csv'):
collected_tweets.to_csv("tweet_data.csv", header='column_names')
else: # else it exists so append without writing the header
collected_tweets.to_csv("tweet_data.csv", mode='a', header=False)
time.sleep(3605)