Python Парсинг Помогите пожалуйста правильно настроить
import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
url_site = ""
ua = UserAgent(verify_ssl=False)
headers = {'Content-Type': 'text/html', 'accept': '*/*', 'user-agent': ua.random}
response = requests.get(url_site, headers=headers, timeout=None)
try:
response.raise_for_status()
except requests.exceptions.Timeout as errt:
print("Timeout Error:", errt)
print("Ошибка timeout, url:", url_site)
except requests.exceptions.ReadTimeout as errrt:
print("ReadTimeout Error:", errrt)
except requests.exceptions.ConnectTimeout as errct:
print("ConnectTimeout Error:", errct)
except requests.exceptions.TooManyRedirects as errtmr:
print("TooManyRedirects Error:", errtmr)
except requests.exceptions.URLRequired as errur:
print("URLRequired Error:", errur)
except requests.exceptions.HTTPError as errh:
print("Http Error:", errh)
code = errh.response.status_code
print("Ошибка url: {0}, code: {1}".format(url_site, code))
print("Connection Error: ", response.status_code)
except requests.exceptions.ConnectionError as errc:
print("Error Connecting:", errc)
except requests.exceptions.RequestException as err:
print("OOps: Something Else", err)
print("Ошибка скачивания url: ", url_site)
else:
soup = BeautifulSoup(response.text, "html.parser")
как избавиться от ошибки:
/Parser_2/venv/lib/python3.10/site-packages/requests/utils.py", line 1048, in _validate_header_part raise InvalidHeader( requests.exceptions.InvalidHeader: Invalid leading whitespace, reserved character(s), or returncharacter(s) in header value: ' Mozilla/4.0 (compatible; MSIE 5.12; Mac_PowerPC)'
Может перепроверять 'user-agent': ua и если он Mozilla/4.0 (compatible; MSIE 5.12; Mac_PowerPC) запускать снова рандом? Подскажите пожалуйста
2. Подскажите, пожалуйста, как правильно сделать сессию в функции И каждые N (например: 5) минут ее закрывать и открывать и чтобы 'user-agent' – менялся тоже (через такое же время)
3. Как правильно обработать ошибку – чтобы он повторно перезапустился при ошибки Отправил тот же запрос
4. Может в headers - дополнительно, что-нибудь отправить - для надежности?
5. Можете подсказать, как вести два лога работы:
- Что успешно сделано
- Ошибка (время по серверу, ошибки python и т.д.)
Если честно жду развернутый ответ от профессионалов, кто реально парсит сайты