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

Как получить отрендеренную HTML-страницу при помощи Selenium или PhantomJS?

Здравствуйте! Помогите, пожалуйста, решить проблему.

Пишу парсер на PHP, который получает данные со страницы, которая отрисовывается JS кодом на стороне клиента. Для этого было решено использовать Selenium (при помощи facebook/php-webdriver) или PhantomJS (при помощи пакета jonnnnyw/php-phantomjs).

Но оба способа пока позволили получить только исходный, неотрендеренный HTML-код. В случае Selenium, видно, что в браузере страница отрисовывается полностью, тем не менее, $driver->getPageSource() возвращает то же сырой HTML и JS скрипты. Использование таймаутов не помогло.

Как можно решить этот вопрос?
  • Вопрос задан
  • 484 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
erge
@erge
Примус починяю
c Selemium не работал, но имхо, брать надо не getPageSource, а после загрузки всей страницы, найти элемент, например body, и получить у него innerHTML, если вы парсите регэкспами. Либо работать с DOM страницы, что как бы наверно удобнее.

примерно как-то так (возможно ошибаюсь с синтаксисом):

$element = $driver->findElement(WebDriverBy::cssSelector('body'));

$src = $element->getAttribute('innerHTML');

# или так

$src = $driver->executeScript("return document.body.innerHTML");
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
kvaks
@kvaks
в Selenium добавь ожидание загрузки страницы
Ответ написан
Комментировать
@grinat
Смотри какой блок появляется когда страница отрендрена и делай waitForSelector и там путь к блоку, раз он появился значит все, react/vue или шо там используется для рендеринга отработали успешно. Да и не советую использовать selenium ибо говно, phantomjs давно уже не мейнтейнится, бери pupeter, это официальная либа от гугла для безликого хрома.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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