Иногда возникает ошибка при парсинге
Занимаюсь парсингом сайта магазина через прокси. У меня иногда вылетает ошибка и я не знаю что мне с ней делать. код функции:
def PluInformation(id, cat, subcat, city_id, city):
cookie = {
'location_id': str(city_id)
}
header = {
# Сюда помещаем наш user-agent
'location_id': str(city_id),
'header_name': 'X-Authorization',
'user_ag': 'Mozilla/4.0 (compatible; MSIE5.01; Windows NT)'
}
try:
r = tor.get(f'https://5ka.ru/api/v2/special_offers/{id}/', headers=header, cookies=cookie)
except requests.exceptions.ProxyError:
time.sleep(120)
r = tor.get(f'https://5ka.ru/api/v2/special_offers/{id}/', headers=header, cookies=cookie)
except http.client.RemoteDisconnected:
print('первая ошибка при получении инф о товаре и выход')
time.sleep(120)
try:
r = tor.get(f'https://5ka.ru/api/v2/special_offers/{id}/', headers=header, cookies=cookie)
except http.client.RemoteDisconnected:
print('вторая ошибка при получении инф о товаре и выход')
return
j = json.loads(r.text)
print(id)
print(j)
category = cat.replace("'", "\'\'")
sabcategory = subcat.replace("'", "\'\'")
plu_name = j['name'].replace("'", "\'\'")
id_code = id
reg_price = j['current_prices']['price_reg__min']
promo_price = j['current_prices']['price_promo__min']
date_start = j['promo']['date_begin']
date_end = j['promo']['date_end']
store_id = city_id
store_adress = city
parse_date = datetime.now().strftime("%Y-%m-%d, %H:%M:%S")
sku_image_url = j['img_link']
plu_json = r.text.replace("'", "\'\'")
текст ошибки:
Traceback (most recent call last):
File "D:\parser\lib\site-packages\urllib3\connectionpool.py", line 670, in urlopen
httplib_response = self._make_request(
File "D:\parser\lib\site-packages\urllib3\connectionpool.py", line 426, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "D:\parser\lib\site-packages\urllib3\connectionpool.py", line 421, in _make_request
httplib_response = conn.getresponse()
File "C:\Users\ABogdanov\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 1345, in getresponse
response.begin()
File "C:\Users\ABogdanov\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 307, in begin
version, status, reason = self._read_status()
File "C:\Users\ABogdanov\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "C:\Users\ABogdanov\AppData\Local\Programs\Python\Python39\lib\socket.py", line 704, in readinto
return self._sock.recv_into(b)
File "D:\parser\lib\site-packages\urllib3\contrib\pyopenssl.py", line 318, in recv_into
raise SocketError(str(e))
OSError: (10060, 'WSAETIMEDOUT')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\parser\lib\site-packages\requests\adapters.py", line 439, in send
resp = conn.urlopen(
File "D:\parser\lib\site-packages\urllib3\connectionpool.py", line 726, in urlopen
retries = retries.increment(
File "D:\parser\lib\site-packages\urllib3\util\retry.py", line 446, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='5ka.ru', port=443): Max retries exceeded with url: /api/v2/special_offers/9248/ (Caused by ProxyError('Cannot connect to proxy.', OSError("(10060, 'WSAETIMEDOUT')")))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\ABogdanov\PycharmProjects\pythonProject\pyterochka\Pyterochka.py", line 159, in PluInformation
File "D:\parser\lib\site-packages\requests\sessions.py", line 543, in get
return self.request('GET', url, **kwargs)
File "D:\parser\lib\site-packages\requests\sessions.py", line 530, in request
resp = self.send(prep, **send_kwargs)
File "D:\parser\lib\site-packages\requests\sessions.py", line 643, in send
r = adapter.send(request, **kwargs)
File "D:\parser\lib\site-packages\requests\adapters.py", line 510, in send
raise ProxyError(e, request=request)
requests.exceptions.ProxyError: HTTPSConnectionPool(host='5ka.ru', port=443): Max retries exceeded with url: /api/v2/special_offers/9248/ (Caused by ProxyError('Cannot connect to proxy.', OSError("(10060, 'WSAETIMEDOUT')")))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\parser\lib\site-packages\urllib3\connection.py", line 159, in _new_conn
conn = connection.create_connection(
File "D:\parser\lib\site-packages\urllib3\util\connection.py", line 84, in create_connection
raise err
File "D:\parser\lib\site-packages\urllib3\util\connection.py", line 74, in create_connection
sock.connect(sa)
TimeoutError: [WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\parser\lib\site-packages\urllib3\connectionpool.py", line 667, in urlopen
self._prepare_proxy(conn)
File "D:\parser\lib\site-packages\urllib3\connectionpool.py", line 932, in _prepare_proxy
conn.connect()
File "D:\parser\lib\site-packages\urllib3\connection.py", line 309, in connect
conn = self._new_conn()
File "D:\parser\lib\site-packages\urllib3\connection.py", line 171, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x0000024CA32015B0>: Failed to establish a new connection: [WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\parser\lib\site-packages\requests\adapters.py", line 439, in send
resp = conn.urlopen(
File "D:\parser\lib\site-packages\urllib3\connectionpool.py", line 726, in urlopen
retries = retries.increment(
File "D:\parser\lib\site-packages\urllib3\util\retry.py", line 446, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='5ka.ru', port=443): Max retries exceeded with url: /api/v2/special_offers/9248/ (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000024CA32015B0>: Failed to establish a new connection: [WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\ABogdanov\PycharmProjects\pythonProject\pyterochka\Pyterochka.py", line 219, in <module>
if h == False:
File "C:\Users\ABogdanov\PycharmProjects\pythonProject\pyterochka\Pyterochka.py", line 162, in PluInformation
r = tor.get(f'https://5ka.ru/api/v2/special_offers/{id}/', headers=header, cookies=cookie)
File "D:\parser\lib\site-packages\requests\sessions.py", line 543, in get
return self.request('GET', url, **kwargs)
File "D:\parser\lib\site-packages\requests\sessions.py", line 530, in request
resp = self.send(prep, **send_kwargs)
File "D:\parser\lib\site-packages\requests\sessions.py", line 643, in send
r = adapter.send(request, **kwargs)
File "D:\parser\lib\site-packages\requests\adapters.py", line 510, in send
raise ProxyError(e, request=request)
requests.exceptions.ProxyError: HTTPSConnectionPool(host='5ka.ru', port=443): Max retries exceeded with url: /api/v2/special_offers/9248/ (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000024CA32015B0>: Failed to establish a new connection: [WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера')))
Я не так давно занимаюсь программированием. Не знаю как исключить эту ошибку правильно или как-то её обойти Ошибка появляется не всегда, точнее очень редко и неприятно. парсинг происходит через хороший платный прокси(маловероятно, что ошибка связанна с прокси, потому что одновременно происходит парсинг другого сайта и в том парсере эта ошибка появляется в другое время ) код в принципе идентичен.