web-dev-qa-db-fra.com

Readtimeout: httpsconnectionpool (hôte = '', port = 443): lu expiré. (Temps de lecture = 10)

Je fais une bande Webscraping sur un site et parfois lors de l'exécution du script, j'ai reçu cette erreur:

ReadTimeout: HTTPSConnectionPool(Host='...', port=443): Read timed out. (read timeout=10)

Mon code:

url = 'mysite.com'
all_links_page = []
page_one = requests.get(url, headers=getHeaders(), timeout=10)
sleep(2)
if page_one.status_code == requests.codes.ok:
    soup_one = BeautifulSoup(page_one.content.decode('utf-8'), 'lxml')
    page_links_one = soup_one.select("ul.product_list") 

    for links_one in page_links_one:
        for li in links_one.select("li"):
            all_links_page.append(li.a.get("href").strip())

Les réponses que j'ai trouvées n'étaient pas satisfaisantes

5
JB_

Pourquoi avez-vous le paramètre Timeout là-bas? Je voudrais simplement éliminer le paramètre Timeout. La raison pour laquelle vous obtenez cette erreur est parce que vous l'avez définie sur 10, indiquant si vous ne recevez pas de réponse du serveur en 10 secondes, augmentez et error. Donc, ce n'est pas nécessairement le serveur qui vous appelle. Si aucun délai n'est spécifié explicitement, les demandes ne sont pas tirées (au moins à votre fin).

page_one = requests.get(url, headers=headers)  #< --- don't use the timeout parameter
1
chitown88