Попытка собрать твиты с определенными хэштегами c с помощью getOldTweets3 и получить ошибку HTTP 503 - PullRequest
0 голосов
/ 27 мая 2020

Я знаю, что на этом форуме есть несколько похожих тем, и я пытался просмотреть многие, но мне кажется, что мой конкретный 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)
...