Foros del Web » Programando para Internet » PHP »

Buscar links en web y entrar aleatoriamente.

Estas en el tema de Buscar links en web y entrar aleatoriamente. en el foro de PHP en Foros del Web. Hola buenas, estoy buscando un codigo que obtenga todos los links de una pagina web para despues meterlos en un array y escoger uno al ...
  #1 (permalink)  
Antiguo 10/05/2010, 00:10
 
Fecha de Ingreso: febrero-2009
Mensajes: 12
Antigüedad: 15 años, 1 mes
Puntos: 0
Buscar links en web y entrar aleatoriamente.

Hola buenas, estoy buscando un codigo que obtenga todos los links de una pagina web para despues meterlos en un array y escoger uno al azar para entrar luego al que se escogio.
Tengo este codigo pero no puedo hacer que los links se separen en el array, alguna idea?
Código:
<?

$html = file_get_contents('http://www.google.com');

$dom = new DOMDocument();
@$dom->loadHTML($html);

// grab all the on the page
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");

for ($i = 0; $i < $hrefs->length; $i++) {
       $href = $hrefs->item($i);

       $url = $href->getAttribute('href');

       // echo $url.',';
$separar = explode(",", $url);
$numero = rand(1,10);
}

?>
<script> parent.location.href = "<? echo $separar[$numero];?>"; </script>
Gracias!
  #2 (permalink)  
Antiguo 10/05/2010, 12:47
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Buscar links en web y entrar aleatoriamente.

Cita:
Iniciado por Axelite Ver Mensaje
alguna novedad?
La verdad, no.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 10/05/2010, 12:55
 
Fecha de Ingreso: febrero-2009
Mensajes: 12
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Buscar links en web y entrar aleatoriamente.

:) gracias seguire buscando.
  #4 (permalink)  
Antiguo 10/05/2010, 13:03
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Buscar links en web y entrar aleatoriamente.

y necesitas usar la class DOMDocument() ???
ya que solo con file_get_contents y preg_match_all podrias obtener los links en un array

saludos
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 10/05/2010, 13:03
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Buscar links en web y entrar aleatoriamente.

¿Pero esperabas que te hiciéramos la tarea?

¿Probaste algo como esto?

Código PHP:
Ver original
  1. $dom = new DOMDocument();
  2. @$dom->loadHTML($html);
  3.  
  4. // grab all the on the page
  5. $xpath = new DOMXPath($dom);
  6. $hrefs = $xpath->evaluate("/html/body//a");
  7.  
  8. $urls = array();
  9.  
  10. for ($i = 0; $i < $hrefs->length; $i++) {
  11.        $href = $hrefs->item($i);
  12.  
  13.        $urls[] = $href->getAttribute('href');
  14. }
  15. print_r($urls);

No sé como funciona aquella librería. No sé si el método getAttribute devuelve todos los 'href', o el primero que encuentre. Si lo meto dentro de un ciclo for, ¿realmente estaré recorriendo todos los href?...
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #6 (permalink)  
Antiguo 10/05/2010, 13:09
 
Fecha de Ingreso: febrero-2009
Mensajes: 12
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Buscar links en web y entrar aleatoriamente.

Si esperara que me hicieras la tarea no hubiera puesto el codigo que tengo hasta el momento, ya he buscado mucho, no soy bueno para php solo pedia ayuda para encontrar la parte que tengo mal.
Si no me quieres ayudar no te molestes, pero bueno gracias por tu aporte.
El codigo q pusiste es el original mio, le modifique algunas cosas pero al meterlo en un array solo obtengo el ultimo link de la web.
  #7 (permalink)  
Antiguo 10/05/2010, 13:12
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Buscar links en web y entrar aleatoriamente.

No es que no te quiera ayudar, en lo absoluto. Si no quisiera ayudar, simplemente no me metería al foro. Lo que me molestó fue tu segundo comentario

Código:
alguna novedad?
Como si estuvieras esperando que te tuvieran hecha la tarea al volver al foro.

Pero bueno...

Como dice Hidek1, es mucho más simple con file_get_contents y preg_match_all puedes hacerlo mucho más simple.

Acá puedes ver un poco de expresiones regulares : http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #8 (permalink)  
Antiguo 10/05/2010, 13:41
 
Fecha de Ingreso: febrero-2009
Mensajes: 12
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Buscar links en web y entrar aleatoriamente.

es cierto, si se entiende como si quisiera q me hicieran la tarea, perdon esque queria subir el tema al inicio y dije lo primero q pense :S
Leere lo que me comentas.
gracias!
  #9 (permalink)  
Antiguo 10/05/2010, 15:11
 
Fecha de Ingreso: febrero-2009
Mensajes: 12
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Buscar links en web y entrar aleatoriamente.

Experimentando con codigos ajenos logre lo que queria!
O al menos eso parece jejeje...

Aqui esta el codigo por si alguien lo necesita.

Código PHP:
Ver original
  1. <?php
  2. $url = "http://www.google.com";
  3.     $var = fread_url($url);
  4.            
  5.     preg_match_all ("/a[\s]+[^>]*?href[\s]?=[\s\"\']+".
  6.                     "(.*?)[\"\']+.*?>"."([^<]+|.*?)?<\/a>/",
  7.                     $var, &$matches);
  8.        
  9.     $matches = $matches[1];
  10.     $list = array();
  11.  
  12.  
  13.  
  14.  
  15.  
  16. // The fread_url function allows you to get a complete
  17. // page. If CURL is not installed replace the contents with
  18. // a fopen / fget loop
  19.  
  20.     function fread_url($url,$ref="")
  21.     {
  22.         if(function_exists("curl_init")){
  23.             $ch = curl_init();
  24.             $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; ".
  25.                           "Windows NT 5.0)";
  26.             $ch = curl_init();
  27.             curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
  28.             curl_setopt( $ch, CURLOPT_HTTPGET, 1 );
  29.             curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
  30.             curl_setopt( $ch, CURLOPT_FOLLOWLOCATION , 1 );
  31.             curl_setopt( $ch, CURLOPT_FOLLOWLOCATION , 1 );
  32.             curl_setopt( $ch, CURLOPT_URL, $url );
  33.             curl_setopt( $ch, CURLOPT_REFERER, $ref );
  34.             curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
  35.             $html = curl_exec($ch);
  36.             curl_close($ch);
  37.         }
  38.         else{
  39.             $hfile = fopen($url,"r");
  40.             if($hfile){
  41.                 while(!feof($hfile)){
  42.                     $html.=fgets($hfile,1024);
  43.                 }
  44.             }
  45.         }
  46.         return $html;
  47.     }
  48. $numero = rand(1,7);
  49.  print($matches[$numero]."<br>");
  50. ?>

Etiquetas: aleatoriamente, links
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:40.