下面是一个链接抓取工具,它可以获取给定深度的网页网址。最后,我添加了一个正则表达式来匹配刚抓取的网址的所有电子邮件。正如您在第二部分中看到的那样,file_get_content
它刚下载的页面相同,意味着执行时间,带宽等两倍。
问题是如何合并这两个部分以使用第一个下载的页面,以避免再次出现?谢谢。
function crawler($url, $depth = 2) {
$dom = new DOMDocument('1.0');
if (!$parts || !@$dom->loadHTMLFile($url)) {
return;
}
.
.
.
//this is where the second part starts
$text = file_get_contents($url);
$res = preg_match_all("/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i", $text, $matches);
}
答案 0 :(得分:0)
替换:
$text = file_get_contents($url);
使用:
$text = $dom->saveHTML();
http://www.php.net/manual/en/domdocument.savehtml.php
或者,在函数的第一部分中,您可以使用file_get_contents
将HTML保存到变量中,然后将其传递给$dom->loadHTML
。这样,您就可以将该变量与正则表达式一起重用。