2016-07-22 8 views
2

perl을 사용하여 프로그래밍 방식으로 웹 페이지의 스크린 샷을 찍는 데 관심이 있습니다. ,그래픽 인터페이스없이 웹 페이지의 스크린 샷을 찍을 수 있습니까?

가 연결하지 못했습니다 "localhost"를, 포트 4242에 연결 문제 : 연결이에서 거부를 나는 across이 솔루션을 온 :

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(); 

을하지만이 코드를 실행하려고 할 때 얻을 /usr/local/share/perl/5.20.2/MozRepl/Client.pm 라인 144

그것은이 실패 닫힌 포트 (데비안 제시, 아파치 펄 5.20)로 인한, 또는 제안 된 MozRepl이 설치되지 않았습니다. alled 또는 올바르게 구성되지 않았습니다.

데비안 서버는 명령 줄 전용이며 다른 경우에는 그래픽 인터페이스가 없습니다.

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 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) 
MozRepl is up to date (0.06). 

, 수 위의 코드 작업이있는 경우 그래픽 인터페이스가 없습니까? 그렇다면이 문제를 디버그하고 해결하기 위해 무엇을 할 수 있습니까?

+1

PhantomJS와 같은 헤드리스 브라우저가 필요합니다. 저는 WWW :: Mechanize :: PhantomJS (https://metacpan.org/pod/WWW::Mechanize::PhantomJS)를 추천하지 않았습니다. 왜냐하면 그것은 실제로 유지 관리되지 않았기 때문입니다, 그러나 저자는 두 가지 2 년의 틈새가 있은 후 올해 출시됩니다. 내가 그것을 시도했을 때, 나를 위해 deal-breaker 인 스크린 샷을 렌더링하는 버그가있었습니다. 나는 패치를 제출했지만 응답이 없으면 잠시 후 Perl을 삭제하고 일반 PhantomJS 만 사용해야했습니다. (내 패치는 몇 주 전에 마침내 적용되었습니다.) – ThisSuitIsBlackNot

답변

2

이 솔루션 :

+0

이 링크를 사용하여 PhantomJS를 다운로드하고 설치했습니다 : https://gist.github.com/julionc/7476620 일단 성공적으로 설치되면'WWW :: Mechanize :: PhantomJS'를 통해 cpan. 주석에 @ThisSuitIsBlack이 제공하지 않은 링크는 PNG를 얻는 방법에 대한 문서를 가지고 있습니다. – KingsInnerSoul