php mysql уроци

Прост спайдър бот

В името на урока ще постна кода накуп, като няма да спазя правилото за отделяне на класовете от изпълнителният код (инстанциите).

<meta http-equiv='Content-Type' content='text/html; charset= utf-8' />
<?php
ini_set('max_execution_time', 300);
class SB{

public function __construct(){

}

public function scan($siteURL){
if($links = $this->getURLs($siteURL)){
foreach($links as $k => $v){
echo "<br><font color='green'>$k - ".$v.'</font><pre>';
if($taken = $this->getURLs($v)){
foreach($taken as $key => $url){
echo "<br><font color='red'>$key - ".$url.'</font><pre>';
print_r($this->getURLs($url));
}
}
echo "</pre>";
}
}
}

private function getURLs($siteURL){
preg_match_all('/href=\"((https?:\/\/|www\.).*?)\"/',file_get_contents($siteURL),$matches);
if($matches[1]){
return $matches[1];
}
return false;
}
}
$time_start = microtime(true);
$SB = new SB();
$SB->scan('http://web-tourist.net/forum/');
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "<br><center>Време ".$time."</center>";

?>

Драснал съм два прости метода. Методът scan() получава връзката, която трябва да обходи. Вътрешно той извиква метода getURLs() връщайки масив със съвпадащи спрямо шаблона стойности. Като цяло просто копирате, поставяте в php файл и стартирате. Кодът е много прост и честно казано няма кой знае какво за обяснение. Сканирането е направено да е на дълбочина 3 автоматични проследявания на заредениете линкове и линковете в тях.

Вашият коментар