Можно ли сделать снимок экрана веб-страницы без графического интерфейса?

Мне интересно программно сделать снимок экрана веб-страницы с помощью Perl. Я нашел это решение:

use WWW::Mechanize::Firefox;
use Path::Class qw/file/;

my $mech = WWW::Mechanize::Firefox->new(
  bufsize => 10_000_000, # PNGs might become huge
);
$mech->get('http://www.stackoverflow.com/');

my $fh = file( 'test.png' )->open( '> :raw' );
print $fh $mech->content_as_png();

но когда я пытаюсь запустить этот код, я получаю:

Не удалось подключиться, проблема с подключением к "localhost", порт 4242: в соединении отказано в /usr/local/share/perl/5.20.2/MozRepl/Client.pm, строка 144

Было высказано предположение, что этот сбой вызван закрытым портом (Debian Jessie, Apache2, Perl 5.20) или MozRepl не установлен или неправильно настроен.

Сервер Debian - это только командная строка, иначе графический интерфейс отсутствует. Когда я бегу cpan WWW::Mechanize::Firefox, я получаю в конце:

CPAN: Storable loaded ok (v2.49_01)
Reading '/root/.cpan/Metadata'
  Database was generated on Fri, 22 Jul 2016 17:53:33 GMT
CPAN: Module::CoreList loaded ok (v5.20150214)
WWW::Mechanize::Firefox is up to date (0.79).

И когда я запускаю cpan MozRepl, я получаю в конце:

CPAN: Storable loaded ok (v2.49_01)
Reading '/root/.cpan/Metadata'
  Database was generated on Fri, 22 Jul 2016 17:53:33 GMT
CPAN: Module::CoreList loaded ok (v5.20150214)
MozRepl is up to date (0.06).

Как видно из названия, может ли приведенный выше код работать, если нет графического интерфейса? Если да, что я могу сделать, чтобы отладить и решить эту проблему?


person KingsInnerSoul    schedule 22.07.2016    source источник
comment
Вам нужен безголовый браузер, такой как PhantomJS. Я не рекомендовал WWW :: Mechanize :: PhantomJS, потому что это не было на самом деле не поддерживается, но автор выпустил два релиза в этом году после двухлетнего перерыва, так что вы можете попробовать. Когда я попробовал это, обнаружилась ошибка с рендерингом скриншотов, которая стала для меня препятствием; Я отправил патч, но через некоторое время без ответа мне пришлось отказаться от Perl и просто использовать простой PhantomJS. (Мой патч наконец-то был применен пару недель назад.)   -  person ThisSuitIsBlackNot    schedule 22.07.2016


Ответы (1)


2 решения:

person nodefourtytwo    schedule 22.07.2016
comment
Я использовал эту ссылку для загрузки и установки PhantomJS: gist.github.com/julionc/7476620 Однажды он был успешно установлен Я установил WWW::Mechanize::PhantomJS через cpan. Ссылка, которую @ThisSuitIsBlackNot предоставил в своем комментарии, содержит документацию о том, как получить PNG. - person KingsInnerSoul; 22.07.2016