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,其中 EMAILS 是上面创建的输出文件的句柄。

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 完成后执行(下载所有文件)。此外,输出到文件不会将正确的信息传递给排序命令。

LWP 在浏览网页以查找电子邮件地址时可能更有用。

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 回答