Добрый день!
Написал код, который парсит страницы сайта.
import requests
import bs4
import urllib.parse
from bs4 import BeautifulSoup
import pandas as pd
pto_numbers = []
for pto_id in range(1, 5000):
pto_id
pto_numbers.append(pto_id)
status_i = []
nomer_pto_i = []
name_company_i = []
adress_i = []
nomer_pto_i = []
all_data = []
telefon_i = []
email_i = []
def get_pto_data(pto_number: int) -> str:
headers = {
"Accept": "application/xml, text/xml, */*; q=0.01",
"DNT": "1",
"X-Requested-With": "XMLHttpRequest",
"Faces-Request": "partial/ajax",
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Origin": "http://oto-register.autoins.ru",
"Referer": "http://oto-register.autoins.ru/pto/",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6"
}
session = requests.Session()
main_page_data = session.get("http://oto-register.autoins.ru/pto/")
main_page = bs4.BeautifulSoup(main_page_data.text)
view_state_element = main_page.select('[name="javax.faces.ViewState"]')
if view_state_element is None or len(view_state_element) == 0:
return None
else:
view_state_data = view_state_element[0]["value"]
data = f"javax.faces.partial.ajax=true&javax.faces.source=mainForm%3AremoteCommandSetupPtoId_action&javax.faces.partial.execute=mainForm%3AremoteCommandSetupPtoId_action&javax.faces.partial.render=mainForm%3AcontentTabsPanel+mainForm%3AptoPanel&mainForm%3AremoteCommandSetupPtoId_action=mainForm%3AremoteCommandSetupPtoId_action&ptoId={str(pto_number)}&mainForm=mainForm&mainForm%3Aj_idt8=&mainForm%3Aj_idt9=&mainForm%3Aj_idt10=&mainForm%3Aj_idt11=&javax.faces.ViewState={urllib.parse.quote_plus(view_state_data)}"
response = session.post("http://oto-register.autoins.ru/pto/index.xhtml",
headers=headers,
data=data)
return response.text if response.status_code == 200 else None
for pto_number in pto_numbers:
test = get_pto_data(pto_number)
#print(test)
Код работает, но если парсить большое количество страниц, то интерпретатор выдает следующую ошибку
NewConnectionError: <urllib3.connection.HTTPConnection object at 0x000001DE0DAD5C10>: Failed to establish a new connection: [WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера
Как избежать данное обстоятельство?