此循环传递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所有电子邮件?当然我不想下载整个网站。
非常感谢你
答案 0 :(得分:2)
在wget完成后执行grep(下载所有文件)。此外,输出到文件不会将正确的信息传递给sort命令。
LWP在查看电子邮件地址的网页时可能更有用。
答案 1 :(得分:1)
您似乎在URL之前忘记了空格:
system ("wget -q -O - \"$_\" | grep -oe '\\w*.\\w*@.\\w*.\\w\\+' | sort -u");
答案 2 :(得分:1)
网址前缺少空格。重定向到了早期。
system("wget -q -O - \"$_\" | grep -oe '\\w*.\\w*@.\\w*.\\w\\+' | sort -u >output.txt");
是什么让您认为system
更改$_
?