以下は、特定の深さのページのURLを取得するリンククローラです。最後に、クロールされたばかりのURLのすべての電子メールに一致する正規表現を追加しました。 2番目の部分で分かるように、file_get_content
と同じページがダウンロードされました。つまり、実行時間と帯域幅が2倍になることを意味します。類似の特性を持つ2つの部分をマージするコードへの変更
最初にダウンロードしたページを使用して、もう一度やりますか?ありがとうございました。
function crawler($url, $depth = 2) {
$dom = new DOMDocument('1.0');
if (!$parts || [email protected]$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);
}
なぜだけではなく、 '$内容=のfile_get_contents($のURL); if(!$ parts ||!@ dom-> loadHTML($ contents)){// ... 'そして関数の最後に' $ contents'を再利用しますか? – Slava
'$ text = file_get_contents($ url);を' $ text = $ dom-> saveHTML(); 'に置き換えるよりも速いと思いますか? – EnexoOnoma