Давайте разберемся изначально с правилами.
- Код нужно указывать в формате текста, это очень важно.
- Обязательно пишите url сайта для полного понимания сути вопроса.
Теперь к самому вопросу.
Сайт исходя фото в вопросе: https://auto.ria.com
Для примера возьмем это объявление: https://auto.ria.com/auto_zero_fxs_34397619.html
Вы пытаетесь получить полный номер телефона из соответствующей графы.
Изначально он имеет вид: (067) xxx-xx-xx
Чтобы получить его в полном формате нужно нажать на кнопку 'показать', после выполнится скрипт javascript:void(0)
, который откроет модальное окно, где будет указан полный номер без xxx
.
К сожалению, нажать на кнопку «показать» с помощью только requests
или beautifulsoup
нельзя, потому что кнопка привязана к клиентской части.
Варианты решения:
- Используйте библиотеку
selenium
, чтобы имитировать клик по кнопке 'показать'.
Пример запроса:
from selenium import webdriver
from bs4 import BeautifulSoup
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options, executable_path=r"C:\path\to")
url = 'https://auto.ria.com/auto_zero_fxs_34397619.html'
driver.get(url)
driver.find_element_by_css_selector('div.show-phone.show-phone-pop').click()
page_html = driver.page_source
soup = BeautifulSoup(page_html, 'html.parser')
phone_element = soup.find('div', {'class': 'popup-successful-call-desk'})
phone_string = phone_element.text.strip()
print(phone_string)
driver.quit()
- Можно использовать API данного ресурса.
Необходимо будет получить API ключ и вот пример готового url для запроса: "https://developers.ria.com/auto/info?api_key=YOUR_API_KEY&auto_id=34397619
"
При выводе ищем данную строку:
"userPhoneData": {
"phoneId": "34397619", // id телефона пользователя
"phone": "(067) 240 37 13" // Телефон пользователя
},
Удачи в парсинге и задавайте вопросы правильно.