Спарсить номер телефона при нажатии на кнопку
есть страница - https://www.olx.kz/d/obyavlenie/kogtetochka-komplekt-dlya-koshechek-novaya-IDlbDnN.html#b42e4f74fa;promoted
нужно получить номер телефона который показываться только при нажатии на кнопку, сделать желательно только через requests
Ответы (1 шт):
Если правильно понял то нужно спарсить номер телефона со страницы.
Писать парсеры дело не благодарное и рискованное ), т.к. сегодня страницы выглядит так, завтра выглядит по другому. и нужно постоянно обновлять свой парсер.
Плюс многие сайты боряться с парсерами по этому нужно вооружиться терпением ну и dev-tools->network в помощь)
В особо редких случаях можно и wireshark использовать ) Ток надо будет совсем немного пошаманить с расшифровкой SSL но это не обязательно
Примерный план действий:
- Нужно посмотреть какие запросы идут на сервере при нажатии кнопки
- Какие запросы идут при открытии страницы ( лучше добавить галочку Preserve Log )
- Можно банально скопировать fetch или curl

- распарсить html сайта выдрав от туда ID, токен или еще какую нибудь информацию необходимую для последующих запросов
На коленке накидал ( чисто как пример )
import requests, bs4, re
url = "https://www.olx.kz/d/obyavlenie/kogtetochka-komplekt-dlya-koshechek-novaya-IDlbDnN.html#b42e4f74fa;promoted"
# через сессию , т.к. скорее всего понадобиться для последующих запросов
session = requests.Session()
# открыть страницу и получить её html код
response = session.get(url)
# нужно получить ID, он будет необходим в дальнешем для получения номера
# ID можно получить из span элемента по классу css-9xy3gn-Text
# возможно класс будет другим в следующий раз , а может и нет
document = bs4.BeautifulSoup(response.text, 'html.parser')
span_id = document.find("span", class_="css-9xy3gn-Text")
# оставить только цифры
id = re.sub(r'[^0-9]', '', span_id.text)
# ????
# тут надо подумать как получить токен, надо смотреть в chrome->dev->networks
# и скорее всего где то мелькает в запросах
token = "????"
headers = {
"authorization": "Bearer %s " % token
}
# url который вызывается после нажатия кнопки и по которому можно номер телефона получить
url_phone = "https://www.olx.kz/api/v1/offers/%s/limited-phones/" % id
response = session.get(url_phone, proxies=proxies, headers=session.headers)
print(response.text)