Как в парсере указать геолокацию?
Пробую создать небольшой парсер для https://sbermarket.ru/, собирающий список магазинов (название, логотип, url), осуществляющих доставку.
При первоначальном входе на сайт, до тех пор пока ты не введешь адрес доставки, у пользователя нет возможности перейти к выбору продуктов в конкретном магазине, а только общий список магазинов для этого города. При нажатии на логотип магазина, сайт просит указать адрес доставки. При просмотре через Инспектор Консоли разработчика никакого тега <a link='url'> нет. Только после указания адреса через Яндекс карты в Инспекторе Консоли разработчика появляется тег <a>. При нажатии на логотип магазина происходит переход к списку доступных продуктов.
Как мне через парсер обратиться к https://sbermarket.ru/, чтобы я мог захватить url магазинов (т.е. надо как-то ввести адрес доставки)?
Ответы (1 шт):
Решил проблему следующим образом:
import requests
def get_markets(lat, lon):
r = requests.get(
f'https://sbermarket.ru/api/stores?lat={ lat }&lon={ lon }&include=closest_shipping_options,labels,retailer&shipping_method=delivery'.format(lat = lat, lon = lon),
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0',
'Accept': 'application/json, text/plain, */*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
'api-version': '3.0',
'client-token': '7ba97b6f4049436dab90c789f946ee2f',
'Connection': 'keep-alive',
'DNT': '1',
'Host': 'sbermarket.ru',
'is-storefront-ssr': 'false',
'Referer': 'https://sbermarket.ru/',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'TE': 'trailers',
}
)
return r.json()