Я использую модуль запросов в Python, чтобы получить результат веб-страницы. Однако я обнаружил, что если URL-адрес содержит символ à в своем URL-адресе, он выдает UnicodeDecodeError:

UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0xe0 в позиции 27: недопустимый байт продолжения

Странно, но это происходит только в том случае, если я добавлю пробел в URL. Так, например, следующее не выдает ошибку.

requests.get("http://myurl.com/àieou")

Тем не менее, следующее делает:

requests.get("http://myurl.com/àienah aie")

Почему это происходит и как правильно сделать запрос?

0
Blaszard 2 Май 2019 в 17:18

3 ответа

Лучший ответ

Использование lib urllib для автоматического кодирования символов.

import urllib
requests.get("http://myurl.com/"+urllib.quote_plus("àieou"))
2
Wonka 2 Май 2019 в 14:42

Используйте quote_plus ().

from urllib.parse import quote_plus

requests.get("http://myurl.com/" + quote_plus("àienah aie"))
1
Olvin Roght 2 Май 2019 в 14:42

Вы можете попробовать URL кодировать ваше значение:

requests.get("http://myurl.com/%C3%A0ieou")

Значение à равно %C3%A0 после кодирования.

0
Hans Daigle 2 Май 2019 в 14:22