Как сделать скриншоты веб-страниц с помощью Perl?

Можно ли написать скрипт в Perl, который открывает разные URL-адреса и сохраняет скриншот каждого из них?

Вы можете использовать WWW :: Mechanize :: Firefox для управления экземпляром Firefox и сбрасывать отображаемую страницу с помощью $mech->content_as_png .

Имейте в виду, что его настройка может представлять собой довольно сложную задачу.

Если все работает так, как ожидалось, вы можете просто использовать сценарий, подобный этому, чтобы сбрасывать изображения желаемых сайтов, но вы должны запустить Firefox и изменить его размер до нужной ширины вручную (высота не имеет значения, WWW :: Mechanize :: Firefox всегда выгружает всю страницу).

 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://sofru.miximages.com/perl/'); my $fh = file( 'test.png' )->open( '> :raw' ); print $fh $mech->content_as_png(); 

Используйте модуль WWW::Selenium , для которого вам понадобится сеанс удаленного управления Selenium .

Метод capture_entire_page_screenshot() должен запускаться и запускаться.

Из WWW :: Selenium on CPAN:

$sel->capture_entire_page_screenshot($filename, $kwargs)

Сохраняет все содержимое текущего windows canvas в PNG-файле …


Типичный сценарий:

 use strict; use warnings; use WWW::Selenium; my $sel = WWW::Selenium->new( host => "localhost", port => 4444, browser => "*iexplore", browser_url => "http://www.google.com", ); $sel->start; $sel->open("http://www.google.com"); $sel->capture_entire_page_screenshot("screenshot.png"); $sel->close; 

Другой подход, который не требует использования браузера, заключается в использовании ImageMagick и HTML2PS для преобразования изображения. Однако будьте осторожны, это не тривиально, и почти невозможно (последнее, что я пробовал), чтобы это нормально работало на Windows.

Как только ImageMagick установлен, самый простой подход – просто запустить системный вызов программы convert которую устанавливает ImageMagick . Если вам нужен менее хакерский подход, вы можете использовать API PerlMagick ImageMagick .

Существует прекрасная дискуссия об этом подходе, который вы можете найти на PerlMonks .

Вы также можете использовать Win32 :: IE :: Mechanize для рендеринга веб-страницы с помощью IE, а затем Win32 :: Screenshot для захвата страницы. Вам, вероятно, придется немного поработать, чтобы выяснить, где взять скриншот, но это не должно быть слишком невероятно сложно.

Конечно, это будет решение для платформы Windows, но может быть достаточно.

Используйте сторонний API веб-сервисов, например http://webshotspro.com/ (скриншоты) или http://www.thumbalizr.com/ (миниатюры).

  • В чем разница между итерацией по файлу с помощью foreach или в Perl?
  • Скрытые черты Perl?
  • Разница двух массивов с использованием Perl
  • Как использовать переменную на стороне замены оператора замены Perl?
  • Удаление цветовых кодов ANSI из текстового потока
  • Как я могу вручную интерполировать строковые escape-строки в строке Perl?
  • Почему XML :: Simple «Disouraged»?
  • Как обрабатывать специальные символы в регулярном выражении Perl?
  • Как сравнить две строки в Perl?
  • Можно ли заменить несколько элементов в одном регулярном выражении в VIM или Perl?
  • В Perl, как я могу прочитать весь файл в строке?
  • Давайте будем гением компьютера.