1

予想通りの感謝。

このループは URL ( $_ 変数内) を配信します。私の考えは、各 URL を処理のために wget に送信することでした。

foreach(@my_array) {
    $browser->get($_);    
    system ("wget -q -O -\"$_\" | grep -oe '\\w*.\\w*@.\\w*.\\w\\+' | sort -u");
}
print EMAILS;

質問:

1) grep は grep を実行しません。$_ である URL のみを取得します。

2) 結果を出力ファイルに正しく送信しているかどうかはよくわかりません。なぜなら、EMAILS は上記の行で作成された出力ファイルのハンドルである EMAIL を出力するだけだからです。

3) >output.txt をその括弧に埋め込んで、別のバリアントを実行しようとしました。

system ("wget -q -O -\"$_\" | grep -oe '\\w*.\\w*@.\\w*.\\w\\+' > output.txt| sort -u");

しかし、それは無視されます

4) 質問は、サーバーでのクロール中にその grep が実行されるのか、それとも wget ですべてのファイルをダウンロードしてから、コンピューターですべての電子メールを grep する必要があるのか​​ということです。当然、ウェブサイト全体をダウンロードしたくありません。

本当にありがとうございました

4

3 に答える 3

2

grep は、wget が終了した後に実行されます (すべてのファイルのダウンロード)。また、ファイルへの出力では、正しい情報が sort コマンドに渡されません。

LWP は、Web ページを調べて電子メール アドレスを探す場合に便利です。

http://search.cpan.org/dist/libwww-perl/lib/LWP.pm

于 2012-06-26T16:19:33.920 に答える
1

URL の前のスペースを忘れたようです:

system ("wget -q -O - \"$_\" | grep -oe '\\w*.\\w*@.\\w*.\\w\\+' | sort -u"); 
于 2012-06-26T16:22:35.817 に答える
1

URL の前にスペースがありません。再編は早期に配置されました。

system("wget -q -O - \"$_\" | grep -oe '\\w*.\\w*@.\\w*.\\w\\+' | sort -u >output.txt");

何がsystem変わると思います$_か?

于 2012-06-26T16:26:41.883 に答える