문제점 : 2500 개의 웹 사이트 목록이있어 그 중 작은 이미지 스크린 샷을 가져와야합니다. 어떻게해야합니까? Perl과 함께 사이트를 구문 분석 할 수 있습니다 .- Mechanize는 좋은 것입니다. 참고 : 결과는 긴 치수에서 최대 240 픽셀 인 미리보기 이미지로만 필요합니다. 순간 나는 느리고 작은 이미지를 다시 제공하지 않습니다 솔루션이 어떻게 스크립트가 빠르고 적은 오버 헤드로 실행 만드는 방법 - 축소판Perl Mechanize - 더 적은 오버 헤드로 스크립트를 빠르게 실행하는 방법
을 spiting을전제 조건 : 부가 기능/mozrepl/ 모듈 WWW : : 기계 장치 :: Firefox; 모듈 이미 저
첫번째 방법 :
use WWW::Mechanize::Firefox;
my $mech = WWW::Mechanize::Firefox->new();
$mech->get('http://google.com');
my $png = $mech->content_as_png();
개요 :이 지정된 탭 또는 PNG 이미지로 렌더링 현재 페이지를 리턴 여기는 제 펄 솔루션이다. 모든 매개 변수는 선택 사항입니다. $ tab의 기본값은 현재 탭입니다. 좌표가 주어지면, 그 사각형은 잘려나갑니다. 좌표는 왼쪽, 위, 너비, 높이의 네 가지 일반적인 항목이있는 해시 여야합니다. 이것은 WWW :: Mechanize :: Firefox에만 해당됩니다.
나는 perldoc에서 좌표 옵션을 알고 있기 때문에 전체 페이지의 크기가 아니라 그냥 사각형으로 잘라낸 것입니다 .... WWW :: Mechanize :: Firefox는 어떻게 처리하나요? 스크린 샷을 저장합니다. 글쎄, 작은 축소판 이미지 만 있으면된다는 것을 잊어 버렸습니다. 그래서 우리는 매우 큰 파일을 가질 필요가 없습니다. 단지 축소판 스크린 샷 만 잡으면됩니다. $ png를 축소하고 이미 저를 발견 한 모듈을 cpan에서 조회했습니다.
메카 모듈은 이미지 크기 조정과 관련이 없습니다. 여기 Imager와 같은 CPAN에 다양한 이미지 모듈이 있습니다. 이미지 - 24 비트 이미지 생성을위한 Perl 확장 프로그램 : 이미 저는 이미지를 만들고 변경하기위한 모듈입니다. 다양한 이미지 형식을 읽고 쓸 수 있으며 선과 다각형 같은 기본 모양을 그리거나 다양한 방법으로 여러 이미지를 혼합하거나 크기를 조절하고 자르기, 텍스트 렌더링 등의 작업을 수행 할 수 있습니다. 모듈을 설치했는데 기본 접근법을 확장하지 못했습니다.
나는 allready를 시도했습니다. 여기있다 :의 조각 [예]를 참조 ... 이것은 내 소스입니다
linux-vi17:/home/martin/perl # perl mecha_test_1.pl
www.google.com
www.cnn.com
www.msnbc.com
command timed-out at /usr/lib/perl5/site_perl/5.12.3/MozRepl/Client.pm line 186
linux-vi17:/home/martin/perl #
:
가 출력 커맨드를 참조하십시오
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Mechanize::Firefox;
my $mech = new WWW::Mechanize::Firefox();
open(INPUT, "<urls.txt") or die $!;
while (<INPUT>) {
chomp;
print "$_\n";
$mech->get($_);
my $png = $mech->content_as_png();
my $name = "$_";
$name =~s/^www\.//;
$name .= ".png";
open(OUTPUT, ">$name");
print OUTPUT $png;
sleep (5);
}
음이 크기에 대해 상관하지 않는다 내가 url-list에 가지고있는 사이트들.
urls.txt [소스 목록]
www.google.com
www.cnn.com
www.msnbc.com
news.bbc.co.uk
www.bing.com
www.yahoo.com
질문 : 솔루션을 확장 할 수 중 하나가 타임 아웃에 중단하지 않도록하는 방법을. 그리고 작은 섬네일 만 저장합니다. 참고 : 다시 : 나는 긴 치수에서 최대 240 픽셀 인 축소판으로 결과가 필요합니다.축소판
사랑은 당신에게서 듣고을 spiting - 필수 조건으로, 나는 allready 모듈 이미 저
스크립트가 적은 오버 헤드로 빠른 실행 만드는 방법를 설치 한! 인사 제로
업데이트 :
는 WWW와 인터넷 :: 텔넷 제한 시간을 지정하는 방법이 있나요 : 내가 같은 시간 제한에 대해 회담 intersting Monkthread을 발견 아주 아주 intersting 있습니다 Schwerms 아이디어뿐만 아니라 : : Mechanize :: Firefox? 순간 내 인터넷 연결이 매우 느리고 가끔$mech->get(): command timed-out at /usr/local/share/perl/5.10.1/MozRepl/Client.pm line 186
아마도 내가 mozrepl-시간 초과 구성 후 loook 필요로 오류 얻을!? 하지만 결국 : 이상한 일이고 타임 아웃의 출처를 모르겠습니다. 어쩌면 파이어 폭스 시간 초과는 동기식으로 결과를 가져 오는 중입니다. 트레이스에서 볼 수 있듯이, WWW :: Mechanize :: Firefox는 매초마다 폴링하여 Firefox가 페이지를 가져 왔는지 여부를 확인합니다.
정말 순 :: 텔넷을 경우, 당신이 아래로 다이빙을해야합니다 :
이$mech->repl->repl->client->{telnet}->timeout($new_timeout);
가 ** 업데이트 ** 그래서 질문 있습니다
: 내가 ** 인터넷의 사용 마법사 :: 텔넷 : ** Perl-Core에 있음 **
@ Alexandr Ciornii : 힌트를위한 thx! 이후 나는 이것을 좋아할 것이다 사용 : Net :: Telnet;하지만 코어에 없다면 나는 이렇게 갈 수 없다. Daxim @ : $ corelist 순 :: TelnetNet :: 텔넷 CORE에 없었다 - 내가 BTW
위처럼 갈 수 없어 의미 : Øyvind Skaar 언급처럼 우리가 기대해야 할 많은 URL 년대로 일부는 실패하고 그것을 처리 할 것입니다. 예를 들어, 실패한 것들을 배열이나 해시에 넣고 X 번 다시 시도합니다.
멀티 프로세싱을 위해 fork()를 사용하여 비트를 빠르게 처리 할 수 있습니다 ... –
안녕하세요 Alex - 매우 작은 이미지 (/ 축소판)를 잡아 먹으면 어떤 과정을 거치게됩니까? 참고 나는 큰 이미지가 필요하지 않습니다. 아주 아주 작은 이미지가 아주 잘 어울립니다 ... 당신은 무엇을 추측합니까? 참고 - 이미 저를 적용하는 방법이 필요합니다. – zero
많은 URL을 통해 일부는 실패하고 처리 할 것으로 기대해야합니다. 예를 들어, 실패한 것들을 배열이나 해시에 넣고 X 번 다시 시도하십시오. –