Как получить страничку города Ярославль с помощью requests Python?

Есть сайт https://www.stanki.ru/about/contacts/ Нужно получить страницу города Ярославль. Как это сделать? Я вижу, что сайт сначала отправляет post запрос на "https://www.stanki.ru/ajax/choose_region_by_id.php" Пробовал передавать cookies, ничего не выходит. Просьба дать ответ с кодом.

введите сюда описание изображения


Ответы (1 шт):

Автор решения: DiMithras

Всё таки не совсем понятно какую именно страницу хочешь вытащить, но чтобы выдало нужную в '/ajax/cities_phones_html.php', надо чтобы в cookies была запись про выбранный город.

from urllib.parse import urljoin as uj
from bs4 import BeautifulSoup as bs
from pprint import pprint
import requests
import json

url = 'https://www.stanki.ru/'
s = requests.Session()
r = s.get(uj(url,'ajax/regions_list_alphabet.php'))

soup = bs(r.content, 'lxml')
city_id = soup.find("span", string="Ярославль").parent['data-id']

s.post(uj(url,'/ajax/choose_region_by_id.php'), {'city-id':city_id})

r = s.get(uj(url,'/ajax/cities_phones_html.php'))
pprint(json.loads(r.content))
Вывод:
{'address': 'г. Москва, ул. Большая Семеновская, д. 40, стр. 13',
 'city_delivery_page_url': '/about/delivery/yaroslavl/',
 'city_id': 9476822,
 'cur_city': 'Ярославль',
 'cur_city_code': 'yaroslavl',
 'cur_phone': '+7 (485) 249-19-60',
 'cur_phone_formated': 'tel:+74852491960',
 'has_office': None,
 'phonelist': '<li class="phoneList__item">\n'
              '            <a class="phoneList__link" '
…
}
  • заходим на "regions_list_alphabet.php" и парсим city-id города. Вдруг менять будет?
  • в post выбираем город, теперь в s.cookies будет нужная запись о городе
  • всё, теперь можно идти по последней ссылке и выдает Ярославль.
→ Ссылка