#javascript #python #python-3.x #web-scraping #python-requests
#javascript #python #python-3.x #очистка веб-страниц #python-запросы
Вопрос:
Я пытаюсь получить содержимое сайта, но это содержимое появляется только тогда, когда я нажимаю ссылку «Диаграмма», которая представляет собой команду JavaScript, подобную этой:
javascript:__doPostBack(amp;#39;fcc1$dgrC$ctl02$ctl00amp;#39;,amp;#39;amp;#39;
из элемента, подобного этому:
<a href="javascript:__doPostBack(amp;#39;fcc1$dgrC$ctl02$ctl00amp;#39;,amp;#39;amp;#39;)">Chart</a>
И это то, что происходит, когда вы нажимаете на «Диаграмму»:
Вы можете видеть, что ссылка не меняется, поэтому единственный способ получить код диаграммы — каким-то образом отправить эту команду JavaScript
Как найти все ссылки на диаграмму?
Как я могу выполнить «виртуальный щелчок» по ссылкам на диаграмму?
И после этого, как получить новый html?
Я действительно ценю вашу помощь!
Ответ №1:
doPostBack просто устанавливает поля формы __EVENTTARGET и __EVENTARGUMENT и отправляет форму. Кстати, это просто кавычки.
Комментарии:
1. Что? И как мне использовать запросы для этого?
2. Это запрос POST. Установите __EVENTTARGET в fcc1$ dgrC $ctl02 $ctl00 и __EVENTARGUMENT в пустую строку
Ответ №2:
Если слушатели javascript действительно «нажимают» на эти ссылки, у вас могут возникнуть проблемы с поиском реальной ссылки для нажатия.
Вместо этого вы могли бы использовать инструмент для имитации веб-браузера на python и «щелкнуть» по этой ссылке, чтобы перейти к следующей странице. Лучшее, что я использовал, — это Mechanical Soup: https://mechanicalsoup.readthedocs.io/en/stable/introduction.html .
Комментарии:
1. Привет, Викас, спасибо за предложение! Ссылка «Диаграмма» имеет шаблон:
2. Первое равно 1, второе 2
3. <a href=»javascript:__doPostBack(amp;#39;fcc1$dgrC$ctl0(((((2)))))$ ctl00amp;#39;,amp;#39;amp;#39;)»> Диаграмма</a>
4. <a href=»javascript:__doPostBack(amp;#39;fcc1$dgrC$ctl0(((((3)))))$ ctl00amp;#39;,amp;#39;amp;#39;)»> Диаграмма</a>
5. Как мне теперь имитировать этот щелчок?