У меня есть PHP-скрипт, который загружает содержимое страницы с другого сайта с помощью библиотеки CURL и simple_html_dom PHP. Это отлично работает. Если я выхожу из возвращенного HTML, я могу видеть div-контент там.
Однако, если я попытаюсь выбрать только этот div с помощью simple_html_dom, div всегда будет пустым. Сначала я не знал почему. Теперь я знаю, что это потому, что его содержимое, по-видимому, заполнено javascript / ajax.
Как получить контент сайта, а затем выбрать div-content ПОСЛЕ того, как javascript заполнил его правильным контентом?
Возможно ли это? Благодаря!
Да, его кусок пирога, если вас интересует только тот html, который возвращается ajax.
Для такого рода скрипирования экрана вы можете попробовать 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 }
Да, это возможно.
Что вам нужно сделать, так это следующее:
ех. Предположим, вы хотите получить контент 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, данные также будут доступны для вас.