@karadzhich

Загрузка кода страницы и исполнение JS с изменением HTML-кода на php. Есть готовые решения?

Мне нужно скачать код определённой страницы сайта и через класс DOMDocument анализировать его и вытаскивать нужную информацию.
Проблема в том, что и метод DOMDocument->loadHTMLFIle(), и функция file_get_contents загружают только HTML в том виде, в котором его возвращает сервер, а нужная мне информация подгружается дополнительно с помощью JS.
Есть ли на php готовое решение, которое не только загрузит исходный HTML, но и исполнит JS (в событиях window.onload и подобных ему) и вернёт уже изменённый HTML, какой выводится в браузере при открытии страницы?
  • Вопрос задан
  • 493 просмотра
Пригласить эксперта
Ответы на вопрос 2
Wolfnsex
@Wolfnsex Куратор тега PHP
Если не хочешь быть первым - не вставай в очередь!
Вы же понимаете, что для того, что бы выполнить JS-код в PHP, нужно JS-движок либо написанный на самом PHP, либо в него встраиваемый. Вариант движка JS написанного целиком на PHP - я не рассматриваю вообще, так как это был бы полный маразм и с точки зрения трудозатрат и с точки зрения производительности и конечного результата. Соответственно, остаётся вариант - использовать решение которые бы в PHP встраивалось... но, такое решение с вероятностью 99% не будет доступно на виртуальном хостинге, но его можно установить на локальный VPS или выделенный сервер.

Одним из наиболее популярных JS-движков является V8, вырезанный из Google Chrome, в частности, есть его реализация для PHP, наверняка кто-нибудь уже попытался написать что-то подобное (скрестить PHP и JavaScript, что бы получить некое подобие браузера)...

Но я бы пожалуй, попробовал начать с каких-то более простых (в реализации) вариантов, в частности, поискал бы команды и/или плагины для браузера, которые бы позволяли сохранить код страницы целиком в HTML-файл, управляясь при этом из командной строки, или попробовал бы написать скрипт для браузера (на JS), который бы вставлялся в конец страницы (например, с помощью простейшего прокси, который можно написать на том же PHP или поковыряться с Nginx/Apache), забирал бы текущий HTML-код прямо из браузера, после его изменений и отправлял бы его в готовом виде на PHP-скрипт, который бы после парсинга выдавал адрес следующей страницы в тот же скрипт, и так до бесконечности (или пока нужные страницы не кончатся).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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