Я пытаюсь разнообразные методы PHP, чтобы «получить» веб-сайт & сохранить вывод HTML в файл на моем сервере. Однако URL, который я пробую, содержит javascript.
HTML-код, который я вижу в выходных данных моего php-скрипта, пропускает некоторый контент (созданный с помощью Javascript по указанному URL-адресу)
Я нашел что-то под названием PhantomJS, которое, по-видимому, анализирует URL-адреса с «обработанным» Javascript.
Примеры, которые я нашел, неполны & показывать только 1 часть кода за раз, без каких-либо полных / полезных рабочих скриптов.
Некоторые вопросы
1) — я думаю, что могу сделать эту часть, еще не проверенную.
Я могу использовать команды EXEC или SYSTEM для активации PhantomJS через мой PHP-скрипт.
Я не проверял, но я думаю, что знаю, как отправить 2 переменные в PhantomJS
http://phantomjs.org/quick-start.html
Угадай:
address = system.args[1];
value = system.args[2];
phantomjs loadpeed.js http://www.google.com 56
(56 — это вторая переменная) Я думаю, что могу передать несколько переменных в PhantomJS. ??
2) Я не могу / пока не нашел ответы на эти вопросы. может кто-нибудь помочь.
а) Можно ли сохранить результат HTML сайта в указанном мной файле (одна из переменных, которые я передаю скрипту).
или же
б) передать код HTMl обратно в скрипт PHP & сохранить его в массив / переменную.
Есть ли хорошие примеры — Небольшие, но РАБОЧИЕ сценарии использования фантомного JS из сценария PHP?
Если я правильно понял проблемы, с которыми вы столкнулись, я бы порекомендовал вам сделать следующее:
Вот пример, который вы можете использовать:
<?php
// An example of using php-webdriver.
require_once('lib/__init__.php');
// launching with GhostDriver
// remote host
//$host='http://162.243.175.134:8080';
//host launched on local machine
$host='http://127.0.0.1:8080';$desired_capabilities = DesiredCapabilities::phantomjs();
$driver = RemoteWebDriver::create($this->host,$desired_capabilities,5000);
$driver->get('http://www.google.com');
// this way you're able to get page source
echo $driver->getPageSource();?>
фактический результат $driver->getPageSource();
функция:
http://gyazo.com/4a5c4c1c378d7dc9714ddcc9e37b0174
Как только вы получите источник страницы в переменную, вы сможете сохранить его в файл (на своем сервере) или выполнить другие действия с ним.
Я согласен с @Artjom B., что отправка и получение данных в / из phantomJs с помощью php описано довольно хорошо.
Надеюсь, мои идеи помогут вам.
С уважением.
Других решений пока нет …