Kavrese
@Kavrese
Начинающий Android Developer и Python Developer

Как добавить кодировку русских символов в запрос библиотеки requests (Python и API Геокодер от Яндекса)?

Есть API Геокодер от Яндекса, в котором присутствует получение координат адреса по ссылке. Пример запроса: . В нём присутствую русские буквы и requests с ними не ладит. Моя функция для запроса:
def requestsGet():
    r = requests.get('https://https://geocode-maps.yandex.ru/1.x/?apikey=7cf0c3a3-4ae5-4e20-8250-34d99c8eb365=Москва,+Тверская+улица,+дом+7', params={'format': 'json'})
    print('Url запроса:', r.url)
    return r.json()


В итоге запрос становится не читаемым:
geocode-maps.yandex.ru/1.x/?apikey=7cf0c3a3-4ae5-4e20-8250-34d99c8eb365=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0,+%D0%A2%D0%B2%D0%B5%D1%80%D1%81%D0%BA%D0%B0%D1%8F+%D1%83%D0%BB%D0%B8%D1%86%D0%B0,+%D0%B4%D0%BE%D0%BC+7&format=json

И requests, как не удивительно, выдаёт ошибку:
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='https', port=443): Max retries exceeded with url: //geocode-maps.yandex.ru/1.x/?apikey=7cf0c3a3-4ae5-4e20-8250-34d99c8eb365=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0,+%D0%A2%D0%B2%D0%B5%D1%80%D1%81%D0%BA%D0%B0%D1%8F+%D1%83%D0%BB%D0%B8%D1%86%D0%B0,+%D0%B4%D0%BE%D0%BC+7&format=json (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))


Ссылка на документацию об формате запроса API Геокодер от Яндекса
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
SoreMix
@SoreMix
yellow
Получившийся результат
%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0,+%D0%A2%D0%B2%D0%B5%D1%80%D1%81%D0%BA%D0%B0%D1
и есть кодировка. Это абсолютно валидный синтаксис.
https://www.urlencoder.org/
screenshot
6012c8831940b501535859.jpeg


И requests, как не удивительно, выдаёт ошибку:

Естсественно, ведь вы аж два раза протокол указали
https://https://geocode-maps.yandex.ru
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Andy_U
У вас "&geocode=" пропущено в строке запроса. А apikey зря опубликовали.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы