2011-12-06 1 views
0

私は2500のWebサイトのリストを持っており、それらのサムネイルのスクリーンショットを取得する必要があります。それ、どうやったら出来るの?私はPerl Mechanizeでサイトを解析しようとする可能性があります。ディレクトリからいくつかの変数を読み取る - 機械化で解析するため

use WWW::Mechanize::Firefox; 
    my $mech = WWW::Mechanize::Firefox->new(); 
    $mech->get('http://google.com'); 

    my $png = $mech->content_as_png(); 

どのようにしてこのすべてを異なるURLで行うのですか?ファイルからそれらを読み取るにはどうすればよいですか?つまり、URLをファイルに保存します。その後、別のディレクトリに結果を出力します。ドキュメントから

は、与えられたタブまたはPNG画像としてレンダリング現在のページを返します。すべての パラメータはオプションです。 $ tabのデフォルトは現在のタブです。 座標が与えられると、その長方形が切り取られます。 座標は、通常の4つのエントリ、つまり の左、上、幅、高さのハッシュでなければなりません。これはWWW :: Mechanize :: Firefoxに特有のものです。あなたのリストを想定し

+2

SOのユーザによって提供[オリジナル解答](http://stackoverflow.com/a/8381303)[gangabass](HTTP ://stackoverflow.com/u/347767)。 – daxim

答えて

2

私は理解していると思います...ファイルに保存された各行に1つずつ2,500個のURLのリストが必要です。上のスクリプトでファイルを開き、行を読んだり、ウェブサイトを取得したりしますか?もしそうなら、このような何か:

Filename: urls.txt 
    ------------------ 
    www.google.com 
    www.cnn.com 
    www.msnbc.com 
    news.bbc.co.uk 
    www.bing.com 
    www.yahoo.com 

が続いコード:

use WWW::Mechanize::Firefox; 
    my $mech = WWW::Mechanize::Firefox->new(); 

    open(INPUT, "urls.txt") or die "Can't open file: $!"; 

    while (<INPUT>) { 
     chomp; 
     $mech->get($_); 
     my $png = $mech->content_as_png(); 
    } 
    close(INPUT); 
    exit; 
+2

Mechanize ' - > new()'操作を 'while()'ループから持ち上げることはできますか?スクリプトのパフォーマンスを向上させるでしょうか? – sarnold

+1

確かにそれは良いキャッチだろう。一度インスタンス化するだけで済みます。私は私の答えを更新します。 – AWT

+0

こんにちはtorgisこんにちはsamold - すばらしい返信の多くの多くのありがとう。私はこれをテストする。確かに良い結果で! – zero

1

list.txtという名前のファイルにあります。

open(my $fh, '<', 'list.txt') or die "Could not open list.txt: $!"; 
foreach my $url (<$fh>) { 
    chomp $url; 
    # Do your mechanize thing here using $url 
} 
close $fh; 

基本的には、ファイル内の行のすべてを、ループをファイルを開きます。

+0

こんにちは - 偉大な答えの多くの多くのありがとう!圧倒的!ありがとうございます。挨拶 – zero

関連する問題