Ошибка HTTP 403 в веб-очистке публикаций Python 3

avatar
mynamejeff
1 июля 2021 в 20:32
267
2
1

Это трассировка ошибки, которая возникает, когда я пытаюсь указать URL-адрес публикации. Он работает для обычных веб-сайтов, таких как Stack Overflow или Википедия, но когда я пробую его на таких публикациях, как https://www.sciencedirect.com/science/article/pii/S1388248120302113?via%3Dihub , Ошибка появляется.

Вот мой код:

req = Request(' https://www.sciencedirect.com/science/article/pii/S1388248120302113?via%3Dihub', headers={'User-Agent': 'Mozilla/5.0'})
html_plain = urlopen(req).read()

Вот трассировка ошибки:

 File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1776.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 214, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1776.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 523, in open
    response = meth(req, response)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1776.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 632, in http_response       
    response = self.parent.error(
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1776.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 561, in error
    return self._call_chain(*args)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1776.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 494, in _call_chain
    result = func(*args)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1776.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 641, in http_error_default  
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
Источник

Ответы (2)

avatar
user19063751
7 мая 2022 в 19:58
0
try:
    # If you're getting a 403 response, use this. ("HTTP error occurred: 403 Client Error: Forbidden")
    user_agent = 'Mozilla/5.0'
    response = requests.get(url, headers={'User-Agent': user_agent})
    # If the response was successful, no Exception will be raised
    response.raise_for_status()
except HTTPError as http_err:
    print(f'HTTP error occurred: {http_err}')  # Python 3.6
except Exception as err:
    print(f'Other error occurred: {err}')  # Python 3.6
else:
Community
8 мая 2022 в 19:16
0

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

avatar
Samuel Teixeira
1 июля 2021 в 20:36
0

Код ответа об ошибке клиента HTTP 403 Forbidden указывает, что сервер понял запрос, но отказывается авторизовать его. Это не ошибка в коде, это веб-сайт отказывается серверировать эту страницу, когда вы выполняете веб-зачистку.

Frédéric Perron
1 июля 2021 в 20:42
0

Некоторые веб-сайты просто запрещают такой запрос, когда агент неверен. На самом деле есть способ обойти это, поскольку вы можете получить доступ к веб-сайту с помощью браузера.