Как получить содержимое javascript / ajax -loaded div на сайте?

У меня есть PHP-скрипт, который загружает содержимое страницы с другого сайта с помощью библиотеки CURL и simple_html_dom PHP. Это отлично работает. Если я выхожу из возвращенного HTML, я могу видеть div-контент там.

Однако, если я попытаюсь выбрать только этот div с помощью simple_html_dom, div всегда будет пустым. Сначала я не знал почему. Теперь я знаю, что это потому, что его содержимое, по-видимому, заполнено javascript / ajax.

Как получить контент сайта, а затем выбрать div-content ПОСЛЕ того, как javascript заполнил его правильным контентом?

Возможно ли это? Благодаря!

Solutions Collecting From Web of "Как получить содержимое javascript / ajax -loaded div на сайте?"

Да, его кусок пирога, если вас интересует только тот html, который возвращается ajax.

  1. Собирайте информацию, такую ​​как url, параметры и тип запроса (post / get) из этого ajax-запроса.
  2. Создайте тот же запрос из вашего кода php / curl, и вы его получили.
  3. И надеюсь, что серверная логика не проверит, кто отправил запрос.

Для такого рода скрипирования экрана вы можете попробовать phpQuery или Snoopy .

phpQuery имеет плагин для веб-браузера и заявки на scoopy для имитации одного

вы всегда можете привязываться к событию, которое запускается, когда xhr возвращает данные в браузер и выполняет ваши операции там.

var xhReq = createXMLHttpRequest(); xhReq.open("GET", "ur_php_url.php"); xhReq.onreadystatechange = onResponse; xhReq.send(null); function onResponse() { // do the necessary } 

Да, это возможно.

Что вам нужно сделать, так это следующее:

  1. Создайте вызов CURL на эту веб-страницу, чтобы получить любой параметр, используемый в вызове Ajax, который загружает контент, который вы ищете.
  2. Создайте еще один вызов CURL в файл, который вызывается на этой веб-странице Javascript, используя параметры, которые вы получили с помощью шага номер 1.

ех. Предположим, вы хотите получить контент http://www.domain.com/page.html, и этот page.html извлекает некоторые другие данные с помощью Ajax, скажем $ ("#div") .load ("http: // www .domain.com / Ajax / data.php? время = 48484 & с = 487387" ).

Вы сделаете сначала запрос CURL на page.html и получите полный URL-адрес вызова Ajax, используя функцию PHP preg_match () или любую эквивалентную функцию на любом другом языке. После этого создайте еще один запрос CURL на этот URL – http://www.domain.com/ajax/data.php?time=48484&c=487387 – и получите его содержимое.

Вы все настроены!

К сожалению, Javascript запускается на стороне клиента, в браузере, поэтому, если страница не загружена в веб-браузере, нет простого способа сделать это.

Единственный способ, о котором я могу думать, – иметь браузер, работающий на фоне сервера, перезагрузку и сохранение созданной страницы автоматически в файле, который будет доступен для PHP-скрипта для извлечения. Ну … я не знаю никого, кто реализовал такую ​​идею.

Лучше попробуйте получить URL-адрес, из которого заполняется div. Если содержимое div создается с помощью AJAX, например, возможно, если вы извлечете URL-адрес источника данных cURL, данные также будут доступны для вас.