Как получить данные с сайта Пятерочка
Как из ответа сервиса
r = requests.get('https://5ka.ru/api/stores/?bbox=10.0000,10.0000,100.0000,100.0000')
вытащить "coordinates" и "address".
Пример возвращаемых данных (переносы строк и отступы добавлены для удобства, вообще сервис возвращает все в одну строку):
callback({
"data": {
"type": "FeatureCollection",
"features": [
{
"geometry": {
"type": "Point",
"coordinates": [
51.84103119,
55.12792649
]
},
"properties": {
"city_id": 2471,
"work_start_time": "09:00:00",
"work_end_time": "23:00:00",
"is_24h": false,
"address": "Волгоградская ул., 32"
},
"type": "Feature",
"id": 9745,
"options": {
"preset": "store.active"
}
...
});
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Например:
import requests
import json
r = requests.get('https://5ka.ru/api/stores/?bbox=10.0000,10.0000,100.0000,100.0000')
if r.status_code == 200:
j = json.loads(r.text[9:-2]) # обрезаем лишнее обрамление у JSON
for feature in j['data']['features']:
print('Координаты:', feature['geometry']['coordinates'])
print('Адрес:', feature['properties']['address'])
else:
print('Ошибка получения данных, HTTP статус', r.status_code)
Вывод:
Координаты: [51.84103119, 55.12792649]
Адрес: Волгоградская ул., 32
Координаты: [68.99604356, 33.0824978]
Адрес: ул. Александрова, 20
Координаты: [61.3154729, 47.17058947]
Адрес: ул. Пушкина, 4
Координаты: [51.77765944, 55.10483466]
Адрес: ул. Терешковой, 10
...
Но грузит JSON довольно долго. И это очень ad-hoc решение.
P.S. Получить JSON средствами самого request через r.json() в данном случае не удаётся - в ответе не чистый JSON, а HTML с таким содержанием:
callback({"data":{"type":"FeatureCollection","features":[{"geometry":...});