Долго ковырялся в XHR запросах на https://www.wildberries.ru/services/besplatnaya-dostavka?desktop=1#terms-delivery
Но так и не нашел как оттуда выцепить всю инфу по пунктам выдачи (был найден только post request с помошью которого по айди можно выдрать маршрут и рейтинг пункта, эти данные я использую ниже)
Нашел нужный url в Гугле - https://www.wildberries.ru/webapi/spa/modules/pickups
Плюс добавил к данным получаемым отсюда информацию из пост реквеста по url о котором писал выше.
Получилось такое:
def get_response(url):
response = requests.get(url)
while response.status_code != 200:
print(response.status_code)
time.sleep(1)
response = requests.get(url)
return response
# Название функции get_ звучит странно, учитывая что внутри post request, но ладно
def get_by_ids(url, json_data):
response = requests.post(url, json=json_data)
data = response.json()
return data
if __name__ == '__main__':
pickups_url = 'https://www.wildberries.ru/webapi/spa/modules/pickups'
by_ids_url = 'https://www.wildberries.ru/webapi/poo/byids'
data = get_response(pickups_url).json()
pickups_info = {}
for pickup in data['value']['pickups']:
pickups_info[pickup['id']] = pickup
json_data = list(pickups_info.keys())
values = get_by_ids(by_ids_url, json_data)['value']
for k, v in values.items():
pickups_info[int(k)] = {**pickups_info[int(k)], **v}
for key, value in pickups_info.items():
print('Название: ', value.get('name', '-'))
print('Адрес: ', value.get('address', '-'))
print('Маршрут: ', value.get('wayInfo', '-'))
print('Рейтинг: ', value.get('rate', '-'), '\n')
Консоль:
Название: -
Адрес: г. Ачинск (Красноярский край), 4-й мкр, д. 9
Маршрут: До пункта самовывоза можно доехать автобусами № 7, 8,
остановка Центральная районная больница. Сойдя на остановке
необходимо перейти проспект Мира по направлению к Дому Быта.
Дойдя до Дома Быта пройти 50 метров до жилого 5 этажного дома,
центральное крыльцо самовывоза.
Рейтинг: 4.96
...........
Название: Московский постамат- для жителей подъезда №1
Адрес: Россия, Москва, улица Маршала Ерёменко, дом: 5, корпус: 4, этаж: 1, подъезд: 1
Маршрут: Постамат расположен в здании жилого дома, в подъезде №1.
Войти в подъезд могут только жители и их гости. Постамат
расположен на 1 этаже около входа.
Рейтинг: -
Следующая интересная задачка - парсить только те пункты, что отображаются сейчас, исходя из масштаба на карте