как вытащить заблюренный текст

Рейтинг: 0Ответов: 1Опубликовано: 24.05.2023

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

Подскажите как вытащить при парсинге заблюренный текст.Он становиться виден только тогда когда нажать на него кнопку "показать".Тогда его можно пропарсить.А до этого там стоят ххххххх

Может как то можно извлечь и декодировать номер?

Ответы

▲ 0

Давайте разберемся изначально с правилами.

  1. Код нужно указывать в формате текста, это очень важно.
  2. Обязательно пишите url сайта для полного понимания сути вопроса.

Теперь к самому вопросу.

Сайт исходя фото в вопросе: https://auto.ria.com

Для примера возьмем это объявление: https://auto.ria.com/auto_zero_fxs_34397619.html

Вы пытаетесь получить полный номер телефона из соответствующей графы.

Изначально он имеет вид: (067) xxx-xx-xx

Чтобы получить его в полном формате нужно нажать на кнопку 'показать', после выполнится скрипт javascript:void(0), который откроет модальное окно, где будет указан полный номер без xxx.

К сожалению, нажать на кнопку «показать» с помощью только requests или beautifulsoup нельзя, потому что кнопка привязана к клиентской части.

Варианты решения:

  1. Используйте библиотеку 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()
  1. Можно использовать 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"  // Телефон пользователя
},

Удачи в парсинге и задавайте вопросы правильно.