Bonjour, знает ли кто-нибудь о способе создания паука, который действует так, как если бы он включал javascript?
Код PHP:
file_get_contents("http://www.google.co.uk/search?hl=en&q=".$keyword."&start=".($x*10)."&sa=N")
он будет извлекать выходные данные этой страницы. Если вы использовали PHP Code:
file_get_contents("http://www.facebook.com/something/something.something.php") (im not sure i just know face book is a good example)
он будет возвращать выходной сигнал, который будет включать в себя что-то вроде строк «у вас должен быть включен javascript для продолжения», потому что это сайт с javascript-управлением (недоступен).
EDIT: Код PHP: только что проверили
$link = "http://www.facebook.com/index.php"; $contents = file_get_contents($link); echo $contents;
возвращает: вы используете несовместимый веб-браузер.
Извините, не было достаточно круто, чтобы поддерживать ваш браузер. Сохраните его в одном из следующих браузеров:
* Mozilla Firefox * Safari * Microsoft Internet Explorer
который я тестировал во всех вышеперечисленных браузерах?
По-видимому, в этом конкретном случае Facebook тестирует только HTTP-заголовок « User-Agent
».
Если я использую эту часть кода, основанную на завитке , что позволяет мне устанавливать множество оплонов, используя curl_setopt
:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.facebook.com/index.php"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $html = curl_exec($ch); curl_close($ch); echo $html;
Я получаю то же сообщение, что и вы.
Но, если я попробую отправить User-Agent
который соответствует Firefox (я только что скопировал тот, который действительно отправляет реальный Firefox):
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.facebook.com/index.php"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090910 Ubuntu/9.04 (jaunty) Shiretoko/3.5.3"); $html = curl_exec($ch); curl_close($ch); echo $html;
Я получаю реальную домашнюю страницу Facebook, а не это сообщение об ошибке в несовместимом браузере.
Конечно, это не решит проблему Javascript, которая не выполняется …
… Но выполнение Javascript без браузера – довольно сложная вещь (даже Google не разрешил это ^^)
Есть механизмы, которые позволяют запускать Javascript-код без браузера (например, rhino или расширение PECL Spidermonkey для PHP) ; но даже если они позволяют вам запускать Javascript-код, у вас не будет всей среды и методов, предоставляемых браузером, на которых веб-сайты полагаются …
Идея, если вам нужно обходить сайт, зависящий от Javascript, может заключаться в использовании Selenium , который открывает реальный браузер (то есть firefox или другой) , контролируя его из вашего PHP-кода через Selenium RC .
Но это означает, что у вас должна быть графическая среда и браузер, на вашем компьютере PHP; это также довольно тяжело и медленно – намного медленнее, чем просто загрузка веб-страницы ^^