PhantomJS делает скриншоты на динамической странице?

Есть код который с помощью PhantomJS делает скриншоты страницы, на indiegogo.com категорически отказывается работать,без кастом хидера выдает пустой скриншот, с кастомхидером просто абракадабру в неизвестной кодировке .

var page = new WebPage()


page.customHeaders = {
"upgrade-Insecure-Requst": "1",
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8",
"accept-Encoding": "gzip, deflate, sdch, br",
"accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4",
"user-agent": "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25",
};

var fs = require('fs');
page.onError = function (msg, trace) {
console.log(msg);
trace.forEach(function(item) {
console.log(' ', item.file, ':', item.line);
});
};

page.onLoadFinished = function() {


console.log("page load finished");
page.render('export.png');

phantom.exit();
};

page.open("https://www.indiegogo.com/", function() {
page.evaluate(function() {
});
});

Может быть ему надо куки скормить еще? На других сайтах такого не замечено.
  • Вопрос задан
  • 960 просмотров
Решения вопроса 1
dummyman
@dummyman
диссидент-схизматик
Суть в том, что весь контент формируется после onLoadFinished(), установите задержку до появления тегов по определенному selector-у

То есть, почти все вебмастеры делают выполнение своего яваскрипта по событию DOMContentLoaded у объекта document.

Обратите внимание на примеры:
https://github.com/ariya/phantomjs/blob/master/exa...
https://github.com/ariya/phantomjs/blob/master/exa...
page.render() стоит внутри window.setTimeout()

Или вот пример каспера:
docs.casperjs.org/en/latest/quickstart.html#now-le...

Перед заполнением формы ввода выполняется
this.waitForSelector('form[action="/search"]');
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы