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. Можете подсказать, как вести два лога работы:

  1. Что успешно сделано
  2. Ошибка (время по серверу, ошибки python и т.д.)

Если честно жду развернутый ответ от профессионалов, кто реально парсит сайты


Ответы (0 шт):