@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 .
Буду очень признателен как прямым ответом в виде кода , так и любыми ссылками на статьи по модулям которые могу решить мою проблему как на русском так и на английском
  • Вопрос задан
  • 311 просмотров
Решения вопроса 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.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы