У меня эта проблема в течение нескольких дней … Мне нужно загрузить с php весь html страницы. На этой странице есть функция jquery, которая вызывается, когда загружается вся страница. Эта функция загружает другой html в страницу, поэтому мне нужно загрузить весь загруженный html (часть, загруженная jquery). Я могу знать, что я получаю всю страницу, пытающуюся найти тег, загруженный только из jquery. (например: ввод тега с именем XXX, ввод тега с множественным атрибутом и т. д.)
поэтому я пытаюсь:
$html = file_get_contents("http://wwww.siteToScrape.com"); if (strpos($html, 'multiple') !== false) { echo 'found'; } else { echo 'not found'; }
но результат «не найден».
Затем я загрузил простой html dom, и я попробую:
include 'simple_html_dom.php'; $html = file_get_html("http://wwww.siteToScrape.com"); if (strpos($html, 'multiple') !== false) { echo 'found'; } else { echo 'not found'; }
но результат по-прежнему остается «не найден».
поэтому я думаю, чтобы получить некоторый скрипт php, который будет эмулировать браузер (так что может загрузить jquery тоже), и я скачал PHP Scriptable Web Browser, и я попробую:
require_once('browser.php'); $browser = new SimpleBrowser(); $p = $browser->get('http://wwww.siteToScrape.com'); if (strpos($p, 'multiple') !== false) { echo 'found'; } else { echo 'not found'; }
но результат все еще снова «не найден». Я не знаю, как это сделать .. может кто-нибудь мне помочь ??? благодаря!!!!
Проблема в том, что вы пытаетесь объединить сервер и клиент.
PHP работает на сервере Javascript (а значит и jQuery) запускается в клиентском браузере.
Нет простого способа запустить javascript с помощью PHP. Насколько мне известно, это даже невозможно. Другие языки, такие как Java, могут выполнять то, что вы пытаетесь сделать.
Вы должны посмотреть на другой способ сделать это.
Это также причина, по которой веб-браузеры никогда не пострадают от того, что вы используете с помощью javascript. Это хорошая вещь, которую следует иметь в виду при разработке. Эти динамические загрузки не будут проиндексированы этими сканерами вообще.
Насколько мне известно, это невозможно «только с PHP» . Javascript запускается на клиенте, а не на сервере, и поэтому он невозможен без какой-либо среды эмулятора браузера.
Изменить: вы можете поместить javascript на самой веб-странице, которая будет извлекать внутренний HTTML всей веб-страницы после ее полной сгенерации, а затем использовать вызов ajax для отправки на ваш сервер. Вы должны оставаться в пределах ограничений политики одного и того же происхождения (что не позволяет вам делать айакс-вызовы в других доменах, кроме того, откуда появилась веб-страница хоста).
Как и другие, jquery – это javascript и обычно выполняется клиентом (веб-браузером), а не сервером.
PHP, являющийся серверным языком, не имеет интерпретатора javascript.
Самый простой способ, которым я знаю, запускать javascript с помощью PHP, – это инструменты веб-тестирования, которые часто объединяют браузер без браузера. Вы можете проверить норку , у которой есть back-end для браузера zombie node.js без браузера.
Существует также браузер безглавых phantomjs с различными интерфейсами PHP, такими как этот , который я нашел с быстрым поиском google.
На более ресурсоемкой арене есть также селен , который также имеет интерфейсы PHP.