
23/02/2007, 21:08
|
| | Fecha de Ingreso: noviembre-2006 Ubicación: Salinas
Mensajes: 216
Antigüedad: 18 años, 3 meses Puntos: 0 | |
Problema con robot. Buenas, espero se encuentren bien.
Estuve navegando por la web y encontre algo que hace mucho estaba por crear y lo encontre. Es un spider o robot, pero lo deseo utilizar con unas imagenes (fondos de escritorio).
Pero tiene errores y no encuentro como corregirlos, si me pueden dar una mano, o decirme donde esta el error, gracias. spider.php Código PHP: <?php
// -----------------------------------------------------
//
// Author: WiZ2
// E-Mail: [email protected]
// Date (YYYY/MM/DD): 2002-09-22
// Revision (YYYY/MM/DD): 2002-09-22
// Version: 0.1 ALPHA
//
// -----------------------------------------------------
// REQUIERE class.url.php
// EJEMPLO:
//
// $savepath = "down/blizzard/";
// $indomain = true;
// $rewrite = false;
// $reclevel = 2;
// $rpath = "ghost/";
// evaluate("www.blizzard.com/ghost/index.shtml");
//
// php.exe spider.php
// subst i: c:\scr\down\blizzard
//
// i:\index.html
//
// NOTA:
// No es para nada recomendable usar este spider con
// páginas dinámicas
//
// PARA HACER:
// -----------
// - Que se puedan obtener ficheros html dinámicos con parámetros
// ej. index.php?sec=1
// - Arreglar algún que otro bug del programa
// - Ponerle funcionalidad
// - Hacer un gui con GTK y otros
// -----------------------------------------------------
require_once("class.url.php");
// Extensiones válidas para los ficheros
$valid_ext =
array (
"htm*",
"?htm*",
"php",
"php*",
"gif",
"jpg",
"js",
"css",
"png"
);
// Extensiones válidas para los ficheros con urls
$html_ext =
array (
"htm*",
"?htm*",
"php",
"js",
"css",
"php*"
);
$evaluated = array();
$savepath = "down/";
function makedir($path) {
$path = str_replace("\\", "/", $path);
for ($n = 0; $n < strlen($path); $n++) {
if (substr($path, $n, 1) == "/") {
if (!is_dir(substr($path, 0, $n))) {
mkdir(substr($path, 0, $n), 667);
}
}
}
}
function validPattern($pattern, $txt) {
$stpos = 0; $next = 0;
for ($n = 0; $n < strlen($pattern); $n++) {
switch (substr($pattern, $n, 1)) {
case "?": $stpos++; break;
case "*": $next = 1; $stpos++; break;
default:
if ($next == 1) {
for (;$stpos < strlen($txt);$stpos++) {
if (substr($pattern, $n, 1) == substr($txt, $stpos, 1)) { $stpos++; break; }
}
$next = 0;
} else {
if (substr($pattern, $n, 1) != substr($txt, $stpos, 1)) return false;
$stpos++;
}
}
if ($stpos > strlen($txt)) return false;
}
return true;
}
function filefilter($txt) {
global $valid_ext;
if (strpos($txt, "<") == "" && strpos($txt, ">") == "") {
if (strpos($txt, "{") == "" && strpos($txt, "}") == "") {
if (strpos($txt, ".") != "") {
$url1 = new url($txt);
for ($n = 0; $n < sizeof($valid_ext); $n++) {
if (validPattern("." . $valid_ext[$n], $url1->getExtension())) {
return true;
break;
}
}
unset($url1);
}
}
}
return false;
}
function parseHtml($urlD, $level = 0) {
global $savepath, $indomain, $rewrite;
echo str_repeat(" ", 2 * $level) . "[Loading... $urlD]";
$level++;
$url = new url($urlD);
if ($html = $url->download()) {
echo " {\n";
$tags = explode("\"", $html);
for ($n2 = 0; $n2 < sizeof($tags); $n2++) {
$tagk = explode("'", str_replace(chr(9), "", trim($tags[$n2])));
for ($n = 0; $n < sizeof($tagk); $n++) {
$tag = $tagk[$n];
if (filefilter($tag)) {
$ret = $url->getAbsolute(new url($tag));
if ($indomain) {
if ($url->inDomain($ret)) evaluate($ret->getUrl(), $level);
} else {
evaluate($ret->getUrl(), $level);
}
unset($ret);
}
}
}
echo str_repeat(" ", 2 * $level) . "Saving... " . $savepath . $url->getUri();
makedir($savepath . $url->getPath());
if ($rewrite) {
fwrite($fd = fopen($savepath . $url->getUri(), "w+"), $html); fclose($fd);
echo " - Ok\n}\n";
} else {
if (!file_exists($savepath . $url->getUri())) {
fwrite($fd = fopen($savepath . $url->getUri(), "w+"), $html); fclose($fd);
echo " - Ok\n}\n";
} else {
echo " - Ok(DR FE)\n";
}
}
} else {
echo " - Error\n";
}
}
function evaluate($url, $level = 0) {
global $evaluated, $html_ext, $savepath, $reclevel, $rpath, $rewrite;
// Condición para aceptar la petición
$pu = new url($url);
if (!in_array(strtolower($url), $evaluated)) {
array_push($evaluated, strtolower($url));
$ok = 0;
for ($n = 0; $n < sizeof($html_ext); $n++) {
if (validPattern("." . $html_ext[$n], $pu->getExtension()) && $level < $reclevel) {
if (validPattern("$rpath*", $pu->getUri())) {
parseHtml($url, $level);
$ok = 1; break;
}
}
}
if ($ok == 0) {
echo str_repeat(" ", 2 * $level) . "Saving... " . $savepath . $pu->getUri();
if ($pu->exists($pu)) {
makedir($savepath . $pu->getPath());
if ($rewrite) {
$pu->save($savepath . $pu->getUri());
echo " - Ok\n";
} else {
if (!file_exists($savepath . $pu->getUri())) {
$pu->save($savepath . $pu->getUri());
echo " - Ok\n";
} else {
echo " - Ok(DR FE)\n";
}
}
} else {
echo " - Error(FNE)\n";
}
}
//write_file("sample.out", "$url\n", "a");
}
}
$savepath = "down/ppt/";
$indomain = true;
$rewrite = false;
$reclevel = 2;
$rpath = "";
evaluate("www.unawebqquiera.com");
?> |