Чтение HTML, созданного JavaScript с помощью Python

#javascript #python #html

#javascript #python #HTML

Вопрос:

У меня небольшая проблема со связыванием Python с HTML, CSS и JavaScript: в настоящее время у меня есть веб-сайт, который принимает ввод пользователя и использует JavaScript для изменения некоторых тегов, чтобы Python мог его прочитать.

Однако, когда я попробовал следующий код:

 from requests_html import HTMLSession <br>
session = HTMLSession() <br>
r = session.get('https://infiniteembarrasseddesign.lucatu1.repl.co/') <br>
ex = r.html.find("#ex", first=True) <br>
print(ex.text).
 

Он ничего не выводит. Ну, это так, просто пустой элемент. Однако мой JavaScript должен был заменить textContent div на запись пользователя. Есть ли способ заставить Python читать HTML, созданный JavaScript?

Моя операционная система — Windows 10.

Вот HTML-код, если он вам нужен:

https://repl.it/@LUCATU1/InfiniteEmbarrassedDesign#index.html . URL веб-страницы находится в коде.

Приношу свои извинения за то, что я не могу предоставить основной код для Python, поскольку он включает в себя открытие частных MDB-файлов.

Ответ №1:

Проблема в том, что requests.get не отображает JavaScript, чтобы протестировать его, вы можете открыть Dev Tools (F12 — в Chrome) и нажать «Консоль», открыть и ввести «Отключить JavaScript» и обновить страницу, после того, как вы увидите, что получает ваш web-sraper (запросы). Вы можете решить эту проблему с помощью альтернативной версии, используя Selenium.

Ответ №2:

requests.get не вижу Javascript, вы можете попробовать selenium:

 from selenium import webdriver

driver = webdriver.ChromeDriver()

driver.get("URL")
 

И получить исходный код, используя driver.page_source или сканируя страницу, используя методы selenium.

Комментарии:

1. Это было очень полезно. Однако, когда я попытался запустить его, на экране появилось новое окно, и программа завершилась с ошибкой SessionNotCreatedException. Кроме того, мне нужно было заменить ChromeDriver() на Chrome («путь к драйверу Chrome»). Что здесь не так?