|
46 / 46 / 10
Регистрация: 11.03.2014
Сообщений: 133
|
|
Парсинг сайта: получение адресов всех магазинов11.04.2017, 21:10. Показов 12400. Ответов 18
Метки нет (Все метки)
Добрый день!
Есть желания получить адреса всех магазинов Пятерочка с официального сайта (5ka.ru/stores/). Проблема в том, что для получения адресов, нужно сначала выбрать город, затем сделать какое-либо действие с картой и только тогда появится список магазинов. Пока не приходит в голову, как это можно красиво пропарсить с помощью python. Буду рад любым идеям) Какие есть способы для парсинга таких яндекс-карт? Пока ясно, что буду использовать селениум, но не ясно, какие действия ему задавать.
0
|
|
| 11.04.2017, 21:10 | |
|
Ответы с готовыми решениями:
18
Парсинг адресов страниц сайта Получение всех IP адресов в системе Получение IP адресов всех устройств сети java |
|
|
|
| 11.04.2017, 23:55 | |
|
API Yandex.Map вам в помощь. Сайт всего лишь обращается к этому API и тот ему возвращает json
Сделайте вот такой запрос в браузере: https://5ka.ru/api/stores/around/?lat=55.755814&lon=37.617635&radius=15&active=trueПолучите все адреса магазинов пятерочки в Москве: Кликните здесь для просмотра всего текста
{"warehousePointsGlobal":[],"alcoPointsGlobal":[[55.7391,37.6681]],"storePointsGlobal":[[55.7408,37.5528],[55.7716,37.6656],[55.7169,37.6296],[55.7712,37.5865],[55.7866,37.572],[55.7851,37.6302],[55.7626,37.5546],[55.7219,37.6242],[55.7681,37.6786],[55.7398,37.666],[55.7828,37.5908],[55.7407,37.6701],[55.7795,37.6435],[55.7901,37.5996],[55.7704,37.5736],[55.7322,37.6206],[55.7867,37.6134],[55.7838,37.5901],[55.737,37.6321],[55.7201,37.6262],[55.7603,37.6795],[55.7704,37.5736],[55.7866,37.572],[55.7481,37.6813],[55.7593,37.5803],[55.7456,37.6431],[55.7408,37.5528],[55.7398,37.666],[55.7391,37.6681],[55.7887,37.576],[55.7747,37.6236],[55.7764,37.6608]]}
Да, здесь опять только координаты. Но как из них получить адреса физические знает только Yandex.Map API. ---------------------------------------- .. Прикольно. Они, оказываются юзают Django: https://5ka.ru/api/stores/8498/То есть все физические адреса можно забирать вот по таким ссылкам. Только откуда брать число - я пока не понял. Добавлено через 14 минут Похоже, что можно юзать собственное API сайта: https://5ka.ru/api/
0
|
|
|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
||
| 12.04.2017, 01:24 | ||
|
https://www.x5.ru/ru/Publishin... 16_ENG.pdf См. стр. 52. У них 8363 магазина на декабрь 2016. Я попробовал: 1 - промах. 1000 - промах. 2000 - промах. 6900 - уже попал. Ну, и т.д. как вариант. Не гарантированно, что полностью выведаешь все, но вполне себе представление можно составить, что у них и как.
0
|
||
|
46 / 46 / 10
Регистрация: 11.03.2014
Сообщений: 133
|
||||||
| 12.04.2017, 11:30 [ТС] | ||||||
|
Спасибо за ответы! Будем копать дальше...
Добавлено через 1 час 3 минуты
0
|
||||||
|
|
||
| 12.04.2017, 13:10 | ||
|
Сам запрос я подсмотрел в средствах разработчика браузера. Кстати, у сайта есть список идентификаторов городов - я его получил. И следующим шагом было бы логично запросить по id города список id магазинов для этого города, а далее знаю id магазина легко по ссылкам https://5ka.ru/api/stores/ид магазина/ получать физ. адрес. Но вот этот промежуточный шаг на данный момент повис в воздухе - и если у сайта нет соответствующего API - остается только пробовать запрашивать физ. адреса у яндекса по геокоординатам. Но API yandex.maps я совсем не знаю.
0
|
||
|
46 / 46 / 10
Регистрация: 11.03.2014
Сообщений: 133
|
||||
| 12.04.2017, 13:21 [ТС] | ||||
|
0
|
||||
|
|
|||
| 12.04.2017, 13:51 | |||
|
Это в opera по Ctrl-Shift-I. Чтобы убрать лишние данные вроде загрузки картинок и т.д. выделяем кнопку XHR. И обязательно ставим галочку на Preserve Log, чтобы консоль не очищалась после каждого запроса.
1
|
|||
|
|
|
| 12.04.2017, 14:18 | |
|
Вот список кодов регионов, которые выдает сайт (городов тут оказывается кроме Москвы то и нет :-))
Кликните здесь для просмотра всего текста
{"regions":[
{"id":25,"name":"Архангельская обл."}, {"id":67,"name":"Астраханская обл."}, {"id":46,"name":"Белгородская обл."}, {"id":47,"name":"Брянская обл."}, {"id":15,"name":"Владимирская обл."}, {"id":44,"name":"Волгоградская обл."}, {"id":26,"name":"Вологодская обл."}, {"id":48,"name":"Воронежская обл."}, {"id":36,"name":"Ивановская обл."}, {"id":17,"name":"Калужская обл."}, {"id":41,"name":"Карачаево-Черкесия"}, {"id":68,"name":"Кемеровская обл."}, {"id":37,"name":"Кировская обл."}, {"id":22,"name":"Костромская обл."}, {"id":42,"name":"Краснодарский край"}, {"id":58,"name":"Курганская обл."}, {"id":49,"name":"Курская обл."}, {"id":27,"name":"Ленинградская обл."}, {"id":50,"name":"Липецкая обл."}, {"id":14,"name":"Москва"}, {"id":18,"name":"Московская обл."}, {"id":28,"name":"Мурманская обл."}, {"id":38,"name":"Нижегородская обл."}, {"id":29,"name":"Новгородская обл."}, {"id":69,"name":"Новосибирская обл."}, {"id":70,"name":"Омская обл."}, {"id":53,"name":"Оренбургская обл."}, {"id":51,"name":"Орловская обл."}, {"id":54,"name":"Пензенская обл."}, {"id":59,"name":"Пермский край"}, {"id":32,"name":"Псковская обл."}, {"id":39,"name":"Республика Адыгея"}, {"id":64,"name":"Республика Башкортостан"}, {"id":40,"name":"Республика Дагестан"}, {"id":24,"name":"Республика Карелия"}, {"id":31,"name":"Республика Коми"}, {"id":33,"name":"Республика Марий Эл"}, {"id":34,"name":"Республика Мордовия"}, {"id":65,"name":"Республика Татарстан"}, {"id":66,"name":"Республика Удмуртия"}, {"id":71,"name":"Республика Хакасия"}, {"id":45,"name":"Ростовская обл."}, {"id":21,"name":"Рязанская обл."}, {"id":55,"name":"Самарская обл."}, {"id":30,"name":"Санкт-Петербург"}, {"id":56,"name":"Саратовская обл."}, {"id":60,"name":"Свердловская обл."}, {"id":23,"name":"Смоленская обл."}, {"id":43,"name":"Ставропольский край"}, {"id":52,"name":"Тамбовская обл."}, {"id":20,"name":"Тверская обл."}, {"id":16,"name":"Тульская обл."}, {"id":61,"name":"Тюменская обл."}, {"id":57,"name":"Ульяновская обл."}, {"id":63,"name":"Ханты-Мансийский а.о"}, {"id":62,"name":"Челябинская обл."}, {"id":35,"name":"Чувашская республика"}, {"id":19,"name":"Ярославская обл."}], "popular_cities":[ {"id":1814,"name":"г. Москва","region":14,"is_popular":true}, {"id":1843,"name":"г. Санкт-Петербург","region":30,"is_popular":true } ] } А куках кстати пишется некий location_id, который как я понял формируется из кода региона и кода города - для Москвы это 18+14=1814. Но что это дает я не знаю - к кодам регионов и городов, которые юзают яндекс карты эти коды отношения не имеют.
1
|
|
|
46 / 46 / 10
Регистрация: 11.03.2014
Сообщений: 133
|
||
| 12.04.2017, 14:29 [ТС] | ||
|
0
|
||
|
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
|
|||||||||||||||||||||
| 22.04.2017, 02:58 | |||||||||||||||||||||
|
В поисковой карте формируется запрос на вывод магазинов типа такого
1
|
|||||||||||||||||||||
|
46 / 46 / 10
Регистрация: 11.03.2014
Сообщений: 133
|
|||||||
| 22.04.2017, 10:36 [ТС] | |||||||
|
Супер, спасибо!
Я когда набираю адрес в поисковой строке, то идет запрос такого вида без bbox:
{"warehousePointsGlobal":[],"alcoPointsGlobal":[],"storePointsGlobal":[[59.9275,30.4139],[59.9491,30.4752],[59.953,30.409],[59.9452,30.4142],[59.9124,30.4595],[59.9295,30.4753],[59.9412,30.485],[59.9433,30.4891],[59.9392,30.4753],[59.9505,30.4704],[59.9369,30.4893],[59.9255,30.4236],[59.9188,30.4827],[59.9201,30.4746],[59.9519,30.4225],[59.9522,30.4768],[59.9276,30.4714],[59.9218,30.4594],[59.9223,30.4442],[59.9329,30.4636],[59.9535,30.4706],[59.9369,30.4837],[59.9535,30.4308],[59.952,30.4698],[59.9215,30.4612],[59.9175,30.4579],[59.9292,30.4836]]} Вообще bbох это какая-то стандартная процедура при обращении к yandex map или нет?
0
|
|||||||
|
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
|
|
| 22.04.2017, 11:45 | |
|
ХЗ насчет стандартной процедуры. Но скорей всего это масштаб выводимой карты, если взять лимитные географические координаты (ну или подобрать), то получается охват всех магазинов.
Запрос этот можно увидеть, если просмотреть код на странице https://5ka.ru/stores/. Там в Sources есть /?type=... Если открыть этот запрос в новом окне, то в адресной строке он виден полностью.
0
|
|
|
46 / 46 / 10
Регистрация: 11.03.2014
Сообщений: 133
|
|
| 23.04.2017, 21:58 [ТС] | |
|
Ок, спасибо!
Теперь вопрос с сайтом Дикси (https://dixy.ru/nearest-shop/). Там также адреса выдаются только динамично, опять используются Яндекс карты. Сам сайт построен на Битриксе. Попробовал отследить запросы Networks и ссылки в Source, но ни к чему это не привело. На сайте несколько иная структура поиска. Сначала вручную выбирается регион, населенный пункт,затем идет выпадающий список магазинов. По коду страницы я вижу, что у каждого региона и населенного пункта есть id, пройдясь по которым, по идее, можно вытащить все адреса (например, используя selenium). Но я не понимаю, какие именно запросы должны выполняться, так как адрес страницы всегда остается один и тот же.
0
|
|
|
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
|
|
| 23.04.2017, 23:19 | |
|
что-то сам тоже не смог отыскал, но вот гуглом нашел на дваче обсуждали https://2ch.hk/b/arch/2016-04-... 87920.html
ссылка с id магазинов https://dixy.ru/local/ajax/req... emarks.php
1
|
|
|
46 / 46 / 10
Регистрация: 11.03.2014
Сообщений: 133
|
||
| 23.04.2017, 23:43 [ТС] | ||
|
А как теперь по этим id получить адрес магазина? Я попробовал через геокодер Яндекса, но он выдает другие адреса. Например, магазин с id 9164 и координатами 55.5642,39.1217 имеет на сайте Дикси адрес "Орехово-Зуевский р-н, Дороховское с.п., п.Авсюнино, ул.Ленина, д.13", а если пользоваться геокодером, то он выдает "Россия, Московская область, Орехово-Зуевский район, поселок Авсюнино, улица Ленина, 9А". Т.е. эти адреса тоже прописаны где-то внутри сайта/базы Дикси, а Яндекс карты используются только для вставки карты на сайт.
0
|
||
|
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
|
|
| 23.04.2017, 23:46 | |
|
Они ссылку выудили по схеме как подсказал Garry_Galler в посте Парсинг сайта: получение адресов всех магазинов
По магазинам сейчас не могу помочь, у самого затык в своих делах.
0
|
|
|
46 / 46 / 10
Регистрация: 11.03.2014
Сообщений: 133
|
|||
| 24.04.2017, 00:04 [ТС] | |||
|
0
|
|||
|
39 / 39 / 25
Регистрация: 25.10.2015
Сообщений: 102
|
|
| 24.04.2017, 01:04 | |
|
Так какой адрес нужно вытащить? Который на "id 9164 и координатами 55.5642,39.1217 имеет на сайте Дикси адрес "Орехово-Зуевский р-н, Дороховское с.п., п.Авсюнино, ул.Ленина, д.13"? Тогда это просто, он по той же ссылке https://dixy.ru/local/ajax/req... emarks.php записан в "balloonContent":"
\u041e\u0440\u0435\u0445\u043e\u0432\u04 3e-\u0417\u0443\u0435\u0432\u0441\u043a\u04 38\u0439 \u0440-\u043d, \u0414\u043e\u0440\u043e\u0445\u043e\u04 32\u0441\u043a\u043e\u0435 \u0441.\u043f., \u043f.\u0410\u0432\u0441\u044e\u043d\u0 438\u043d\u043e, \u0443\u043b.\u041b\u0435\u043d\u0438\u0 43d\u0430, \u0434.1309:00-22:00<\/div>" или декодировать, то получится: Орехово-Зуевский р-н, Дороховское с.п., п.Авсюнино, ул.Ленина, д.1309:00-22:00 если адрес в яндекс-картах, то там наверное api есть
0
|
|
|
46 / 46 / 10
Регистрация: 11.03.2014
Сообщений: 133
|
|||||||
| 25.04.2017, 13:16 [ТС] | |||||||
|
Добавлено через 5 часов 32 минуты Еще раз всем спасибо за подсказки! Так, поехали дальше... На сайте Перекрестка (https://www.perekrestok.ru/shops) при выборе региона в коде сайта присутствует информация обо все магазинах в регионе. Проблема в том, что я не могу найти, какой запрос необходимо отправить, чтобы выбрать регион. Я, конечно, могу вручную выбирать регион и затем парсить, но хотелось бы это сделать на автомате.При выборе региона выполняется запрос https://www.perekrestok.ru/address/regionSiteList. По нему есть все id регионов. Но затем непонятно, как зная эту информацию вызвать запрос на выдачу списка магазинов. Добавлено через 14 минут Также буду рад, если посоветуете, что можно почитать на тему таких динамических запросов... Добавлено через 5 часов 43 минуты Пока вот только нашел вариант: просто перебирать ссылки вида https://www.perekrestok.ru/shops/номер от 1 до 10000. Вроде они все должны попадать в этот диапазон. Но было бы здорово получить все-таки все id, либо, как писал выше, научиться делать запрос на разные регионы. Добавлено через 15 часов 34 минуты В общем, если я правильно понял, то регион выбирается с помощью запроса POST. Как именно он формируется, я так и не понимаю ![]() Пока делаю через селениум. (Может кому-то пригодится в дальнейшем). Сначала выбираю плашку с выбором региона, потом сам регион. А на загруженной странице уже без проблем парсятся все магазины.
0
|
|||||||
| 25.04.2017, 13:16 | |
|
Помогаю со студенческими работами здесь
19
Парсинг документов со всех страниц сайта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|