Как спарсить сайт, PhantomJS

Алексей Будагов,
Как спарсить сайт, PhantomJS

Нужно загрузить большое количество страниц с чужого сайта, но при этом обычными серверными запросами (curl и т.п.) сделать это не удается? На помощь приходит PhantomJS, браузер из консоли с управлением на JS.

Быстрый старт

Устанавливаем на centos 7:

yum -y install bzip2 fontconfig npm
npm install phantomjs -g
sudo ln -s /usr/lib/node_modules/phantomjs/lib/phantom/bin/phantomjs /usr/local/bin/

Закидываем в корень веб-сервера getHtmlSource.js скрипт с содержанием:

var page = require('webpage').create(),
address;

var system = require('system');

//Проверяем аргументы, 1 - url сайта - обязательный
if (system.args.length === 0) {
    console.log('Usage: getHtmlSource.js <some URL>');
    system.exit();
}

address = system.args[1];

page.open(address, function (status) {
	console.log(page.content); // Выводим страницу в консоль, php заберет данные в переменную
	phantom.exit();
});

Далее уже на php выполняем скрипт:

$cmd = 'cd /home/bitrix/www/phantomjs && phantomjs --ignore-ssl-errors=true --ssl-protocol=any getHtmlSource.js "https://google.com/"';
$html = shell_exec($cmd);
var_dump($html);

Вот Вам результат выполнения такой команды. Даже гугл отдает страницу без блокировки.

парсинг гугла

Опубликовано 6 Апреля 2019
разработчику, полезное, костыли

Возврат к списку


Комментарии

Для того что бы оставить комментарий, войдите или зарегистрируйтесь