给定一个网站,我想知道从该链接和所有下属网站中以纯文本形式出现的形式为XXXX@YYYYY.ZZZZ的所有电子邮件地址的最佳程序化和/或使用脚本的提取方法,递归地或直到某个固定深度。
给定一个网站,我想知道从该链接和所有下属网站中以纯文本形式出现的形式为XXXX@YYYYY.ZZZZ的所有电子邮件地址的最佳程序化和/或使用脚本的提取方法,递归地或直到某个固定深度。
使用Shell编程,您可以使用两个程序通过管道一起实现目标:
一个例子:
wget -q -r -l 5 -O - http://somesite.com/ | grep -E -o "\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b"
wget以安静模式(-q)从somesite.com.br递归获取所有页面(-r),最大深度为5级(-l 5),并将所有内容打印到标准输出流(-O -)。
grep使用扩展正则表达式(-E),仅显示电子邮件地址(-o)。
所有电子邮件都将被打印到标准输出流中,您可以通过在命令后附加> somefile.txt
将它们写入文件。
此示例已在GNU bash版本4.2.37(1)-release、GNU grep 2.12和GNU Wget 1.13.4上进行了测试。
第一点). 开发人员使用HTML实体格式(rish)HTML Entity添加电子邮件ID:
第二点). 电子邮件写在href="mailto:your@example.com"中。 因此我们可以将其用作正则表达式。
<?php
$str = '<div class="call-to-action ">
<a title="Email" class="contact contact-main contact-email "
href="mailto:info@canberraeyelaser.com.au?subject=Enquiry%2C%20sent%20from%20yellowpages.com.au&
body=%0A%0A%0A%0A%0A------------------------------------------%0AEnquiry%20via%20yellowpages.com.au%0Ahttp%3A%2F%2Fyellowpages.com.au%2Fact%2Fphillip%2Fcanberra-eye-laser-15333167-listing.html%3Fcontext%3DbusinessTypeSearch"
rel="nofollow" data-email="info@canberraeyelaser.com.au">
<span class="glyph icon-email border border-dark-blue with-text"></span><span class="contact-text">Email</span>
<a href="mailto:rishabhdubey20@gmail.com">
</a>
</div>';
// $str = file_get_contents(http://example.com) ; (to get emails from URL in place of file_get_contents i use to prefer CURL) .
$str = html_entity_decode($str);
$regex = "/mailto:([^?]*)/";
if ($rex = preg_match_all($regex, $str,$matches_out)) {
echo "Found a match!";
echo "<pre>";
var_dump($matches_out[0]);
} else {
echo "The regex pattern does not match. :(";
}
?>