Код выдает ошибку соединения через некоторое время - PullRequest
0 голосов
/ 18 января 2020

При получении данных появляется ошибка «Ошибка подключения». Некоторое время он работает нормально, затем выдает ошибку, как я могу преодолеть эту ошибку.

import requests
from bs4 import BeautifulSoup

url = "https://www.example.com"
for page in range(0,951,50):
    new_url = url +page + "&pagingSize=50" 
    r = requests.get(new_url)            
    source = BeautifulSoup(r.content,"html.parser")               
    content = source.select('tr.searchResultsItem:not(.nativeAd, .classicNativeAd)')
    print(content)

Когда я получаю эту ошибку, я хочу, чтобы она подождала некоторое время и продолжила с того места, где она остановилась

Ошибка:

ConnectionError: ('Connection aborted.', OSError("(10054, 'WSAECONNRESET')"))

1 Ответ

1 голос
/ 18 января 2020

Вы можете обойти сброс соединения (и другие проблемы с сетью), выполнив повторные попытки. По сути, вы можете указать запросам на автоматическую повторную попытку при возникновении проблемы.

Вот как вы можете это сделать:

import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

session = requests.Session()

# in case of error, retry at most 3 times, waiting
# at least half a second between each retry
retry = Retry(total=3, backoff_factor=0.5)  

adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)

Тогда вместо:

r = requests.get(new_url)

Вы можете использовать:

r = session.get(new_url)

См. также документацию для Retry для полного обзора сценария ios, который он поддерживает.

...