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

4k
Алексей,
Как спарсить сайт, PhantomJS
Как спарсить сайт, PhantomJS

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

Нужно загрузить большое количество страниц с чужого сайта, но при этом обычными серверными запросами (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
разработчику, полезное, костыли
Поделиться
Похожие статьи
Скошенные углы у блока
Нездоровая тендеция пошла у дизайнеров на такой вид блоков. А в css нет готового решения, приходитьс...
Читать дальше » 0
Алексей,
Чем сделать скриншот сайта
Если перед вами стоит задача сделать скриншот сайта, то есть несколько вариантов
Читать дальше » 0
Алексей,
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
Нужно загрузить большое количество страниц с чужого сайта, но при этом обычными серверными запросами (curl и т.п.) сделать это не удаётся? На помощь приходит PhantomJS, браузер из консоли с управлением на JS.