Foros del Web » Programando para Internet » PHP »

buscar link en una pagina

Estas en el tema de buscar link en una pagina en el foro de PHP en Foros del Web. estoy automatizando un "link exchange" y me pregunto como puedo verificar la existencia de un link en una página de un cliente?? es decir, buscar ...
  #1 (permalink)  
Antiguo 17/06/2005, 15:41
Avatar de mautik  
Fecha de Ingreso: mayo-2004
Mensajes: 149
Antigüedad: 19 años, 11 meses
Puntos: 0
buscar link en una pagina

estoy automatizando un "link exchange" y me pregunto como puedo verificar la existencia de un link en una página de un cliente??

es decir, buscar MI LINK en la pagina del cliente y devolver "ok" si existe ese url???
  #2 (permalink)  
Antiguo 23/06/2005, 06:39
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Tu problema puede separarse en dos:
1) Obtener el código fuente de la página en cuestión.
2) Buscar en el código por el enlace, p.ej. en el atributo href de un elemento <a> (podría buscarse en otros elementos, pero el proceso es similar).

Para resolver el problema 1) es posible usar diferentes mecanismos, como el mecanismo interno de PHP para leer datos desde diferentes tipos de URL en funciones como fopen(), o extensiones como curl, o manejar las conexiones a nivel de sockets directamente.

Para resolver el problema 2) es posible usar expresiones regulares.

Como ejemplo, considera el siguiente segmento de código que puede servirte de guía:

Código PHP:
<?php

// URL de la pagina a analizar
define ('URL_AMIGA''http://www.forosdelweb.com/index.php');

// Enlace a buscar
define ('ENLACE''http://www.maestrosdelweb.com/');


// Funciones


/**
 * descargar_url:
 * @url: URL a recuperar.
 *
 * Funcion de envoltura que obtiene datos desde una URL, intentando
 * diferentes metodos si es necesario.
 *
 * Valor de retorno: El contenido de la URL, o FALSE si falla.
 **/
function descargar_url ($url)
{
    
// Intentar primero directamente mediante el mecanismo interno de
    // PHP de secuencias.
    
if (ini_get ('allow_url_fopen'))
        return @
file_get_contents ($url);

    
// Intentar usando la extension Curl.
    
if (function_exists ('curl_init')) {
        
$ch curl_init ();
        
curl_setopt ($chCURLOPT_URL$url);
        
curl_setopt ($chCURL_HEADERFALSE);
        
curl_setopt ($chCURLOPT_RETURNTRANSFERTRUE);
        
$buffer curl_exec ($ch);
        
curl_close ($ch);
        return 
$buffer;
    }

    
// Si no se pudo obtener, devolver FALSE
    
return FALSE;
}


/**
 * verificar_enlace:
 * @url: URL de la pagina a analizar
 * @enlace: URL del enlace a buscar
 *
 * Verifica si la pagina ubicada en la @url dada contiene un enlace
 * (<a href="..">) hacia @enlace.
 *
 * Valor de retorno: TRUE si se encuentra que la pagina tiene el
 *                   enlace, FALSE de lo contrario.
 **/
function verificar_enlace ($url$enlace)
{
    
$pagina descargar_url ($url);

    if (
$pagina === FALSE) {
        echo 
"No fue posible descargar la página $pagina\n";
        return 
FALSE;
    }

    
// Probar la existencia del enlace mediante una expresion regular
    
$exp_reg '/<\\s*a\\s[^>]*href=[\'"]?' .
        
preg_quote ($enlace'/') . '[\'"]?.*?>/si';

    if (
preg_match ($exp_reg$pagina))
        return 
TRUE;

    return 
FALSE;
}



// Prueba simple..

if (verificar_enlace (URL_AMIGAENLACE)) {
    echo 
'La pagina en ' URL_AMIGA ' contiene el enlace ' ENLACE "\n";
} else {
    echo 
'No se encontró un enlace a' ENLACE ' en ' URL_AMIGA "\n";
}

?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:58.