• Как в python работать с Api Яндекса?

    deepblack
    @deepblack Куратор тега Python
    Вот либа с помощью которой это можно сделать, но на самом деле лучше обойтись без неё.
    пример того как это можно использовать:
    spoiler
    import typing
    
    import requests
    
    from yandex_geocoder.exceptions import (
        YandexGeocoderAddressNotFound,
        YandexGeocoderHttpException,
    )
    
    
    class Client:
        """Yandex geocoder API client.
    
        :Example:
            >>> from yandex_geocoder import Client
            >>> Client.coordinates('Хабаровск 60 октября 150')
            ('135.114326', '48.47839')
    
        """
    
        API_URL = "https://geocode-maps.yandex.ru/1.x/"
        PARAMS = {"format": "json"}
    
        @classmethod
        def request(cls, address: str) -> dict:
            """Requests passed address and returns content of `response` key.
    
            Raises `YandexGeocoderHttpException` if response's status code is
            different from `200`.
    
            """
            response = requests.get(
                cls.API_URL, params=dict(geocode=address, **cls.PARAMS)
            )
    
            if response.status_code != 200:
                raise YandexGeocoderHttpException(
                    "Non-200 response from yandex geocoder"
                )
    
            return response.json()["response"]
    
        @classmethod
        def coordinates(cls, address: str) -> typing.Tuple[str, str]:
            """Returns a tuple of ccordinates (longtitude, latitude) for
            passed address.
    
            Raises `YandexGeocoderAddressNotFound` if nothing found.
    
            """
            data = cls.request(address)["GeoObjectCollection"]["featureMember"]
    
            if not data:
                raise YandexGeocoderAddressNotFound(
                    '"{}" not found'.format(address)
                )
    
            coordinates = data[0]["GeoObject"]["Point"]["pos"]  # type: str
            return tuple(coordinates.split(" "))


    По большому счету это весь её код.
    Ответ написан
    Комментировать
  • Как в python работать с Api Яндекса?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Подойдёт любая библиотека для http-запросов. Хоть входящий в стандартную библиотеку urllib, хоть requests.
    Ответ написан
    Комментировать