Задать вопрос
@icenoon

Как сделать симуляцию клика или разблокировку скрытых данных?

Есть страничка авито . На каждой страничке есть две кнопки , одна ""Написать сообщение" - которая создает диалог с держателем этого объявления, другая "Показать телефон". Как скрипту дать команду совершить клик по этим кнопкам.

Есть две задачи - 1. Создать диалог с владельцем.
2. Показать полный номер владельца.
Что я попытался сделать для задачи - 1

У каждого объявления есть номер , что очевидно
https://www.avito.ru/ufa/nastolnye_kompyutery/4_ya...1412710700

У каждого диалога тоже есть код который включает в себя ваш код и код объявления по которому вы обращаетесь
https://www.avito.ru/profile/messenger/channel/u2i-1412710700-87061295

Но есть одно ЖИРНОЕ НО - если я возьму свой код и код любого объявления и подставлю их в URL диалога то странички не будет существовать для тех объявлений для которых я не кликал кнопку "Написать сообщение"
Я так же пытался изучить код странички для получения ссылки кнопки "Написать сообщение" - ее не существует

Вторая задача полностью аналогична с первой

От сюда - вопрос, как мне нажать любую из этих кнопок скриптом на PYTHON .
Буду очень признателен как прямым ответом в виде кода , так и любыми ссылками на статьи по модулям которые могу решить мою проблему как на русском так и на английском
  • Вопрос задан
  • 331 просмотр
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Хекслет
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Python-разработчик
    10 месяцев
    Далее
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Selenium

...
driver.get('https://www.avito.ru/rostov-na-donu/zapchasti_i_aksessuary/akpp_infiniti_vq37vhr_g37_1791599363')

el = driver.find_element_by_xpath("//button[contains(@data-marker, 'item-phone-button/card')]")
el.click()

el = driver.find_element_by_xpath("//img[contains(@data-marker, 'phone-popup/phone-image')]")

image = Image.open(io.BytesIO(base64.b64decode(el.get_attribute('src').split(',')[1])))
imshow(image)


5ec0df0c2292d211837226.png
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
ArsenyMatytsyn
@ArsenyMatytsyn
Руководитель frontend направления, предприниматель
Тяжелые будни копировальщика...

1. Морда Авито, как и многие другие написаны на JS и ничего общего не имеют с бэкендом (Тут вообще по барабану какой ЯП), кроме как запросами.
2. DOM генерируется динамически в зависимости от действий пользователя.
3. Этого всего ты никогда не увидишь ковыряясь в сырцах, так как DOM показывается уже в дебаггере (F12).

Итого:
От сюда - вопрос, как мне нажать любую из этих кнопок скриптом на PYTHON

Вопрос не про пайтон. Тебе нужно понять, как работает JS, как он работает именно в данном случае (смотри фреймворки типа Vue, React, ноги оттуда растут), а уже с легкой подачи fetch-а от JavaScript-а в бэк уже делай что угодно.
Ответ написан
zkrvndm
@zkrvndm
Архитектор решений
На питоне вы это не сделайте никогда, только на JavaScript.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 100 000 до 150 000 ₽
Hard Bootstrapping LLC. Санкт-Петербург
от 250 000 до 500 000 ₽
ITK academy Воронеж
от 75 000 ₽