Как получить страничку города Ярославль с помощью 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будет нужная запись о городе - всё, теперь можно идти по последней ссылке и выдает Ярославль.
