Скриншот PhantomJS всегда пуст

1

У меня установлен PhantomJS, и примеры скриптов с официального сайта Phantom работают нормально.

Я пытаюсь заставить этот пример скриншота работать:

var page = require('webpage').create();
page.open('http://github.com/', function() {
  page.render('github.png');
  phantom.exit();
});

но все, что я получаю, это пустой файл github.png весом 582Kb

Есть идеи?

  • 1
    Можете ли вы загрузить файл PNG где-нибудь? Если он такой большой, он, вероятно, не пустой.
  • 1
    Возможно, URL должен быть https://github.com/ , поскольку GitHub теперь обслуживается безопасно.
Показать ещё 4 комментария
Теги:
phantomjs

3 ответа

2

Предложение @ced-b разумно, но я не думаю, что ваша проблема будет решена с использованием тайм-аута, потому что реальная проблема, скорее всего, связана с SSL/TLS. GitHub - это веб-сайт HTTPS. Поэтому, если вы хотите получить скриншот, вам может потребоваться добавить параметр --ignore-ssl-errors=true при запуске скрипта PhantomJS. По умолчанию вы должны получить узкий скриншот, но вы можете, конечно, установить более крупный видовой экран:

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

page.viewportSize = {
  width: 1920,
  height: 1080
};

page.open('https://github.com/', function () {
  page.render('github.png');
  phantom.exit();
});
  • 0
    Badacadabra: попытался добавить --ignore-ssl-errors = true и все еще выдает тот же png, только немного больший из-за больших размеров.
  • 0
    Этот скрипт отлично работает на моем компьютере (я использую ту же версию PhantomJS). Какова ваша среда?
0

Имел ту же проблему с этой библиотекой: https://github.com/juliangruber/url-to-screenshot

установка sslCertificatesPath ("any") устраняет проблему

new Screenshot('https://somerandomsite.com/')
  .width(320)
  .height(320)
  .sslCertificatesPath('any')
  .capture()
  .then(img => {
    // do stuff with img
  })
0

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

var page = require('webpage').create();
page.open('http://github.com/', function() {
  setTimeout(function() {
     page.render('github.png');
     phantom.exit();
  }, 500);
});
  • 0
    CED-B: до сих пор не работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню