Foros del Web » Programando para Internet » PHP »

Bot usando CURL y simple_html_dom

Estas en el tema de Bot usando CURL y simple_html_dom en el foro de PHP en Foros del Web. Hola buenas tardes ojala me puedan ayudar. Estoy haciendo un bot para extraer los titulos y url de los anuncios de la siguiente pagina. http://www.jobstoday.co.uk/ ...
  #1 (permalink)  
Antiguo 24/04/2012, 16:19
 
Fecha de Ingreso: enero-2011
Ubicación: Puebla
Mensajes: 9
Antigüedad: 13 años, 3 meses
Puntos: 0
Mensaje Bot usando CURL y simple_html_dom

Hola buenas tardes ojala me puedan ayudar.
Estoy haciendo un bot para extraer los titulos y url de los anuncios de la siguiente pagina.
http://www.jobstoday.co.uk/ Esta usa una cookie para permitir ver los resultados y aparte se tienen que enviar mediante post los criterios de busqueda los cuales pueden estar vacios.
El problema es que cuando obtengo la url de las paginas para ir extrayendo los datos siempre me regresa los resultados de la primera pagina , no recorre las paginas (urls guardadas en un arreglo)y aparte me duplica los resultados.

aqui esta mi codigo
Código PHP:
Ver original
  1. <?php
  2. include('../simple_html_dom.php');
  3. $url = 'http://www.jobstoday.co.uk'; //pagina principal
  4. $url2 = 'http://www.jobstoday.co.uk/cgi-bin/advsearch?rownum=26'; //
  5. $cookie = tempnam('/tmp', 'COOKIE_');
  6.     $formArray = array(
  7.         'fp_skill_include' => '',
  8.         'location_include' => ''
  9.             ); //arreglo con las variables de post
  10.  
  11.     $ch = curl_init($url);
  12.     curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); //guardo la cookie
  13.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // devuelve el resultado
  14.  
  15.     $output = curl_exec($ch);
  16.        
  17.     // la pagina donde se va a utilizar la cookie
  18.     $ch = curl_init($url2);
  19.     curl_setopt($ch, CURLOPT_POSTFIELDS, $formArray);
  20.     curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
  21.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  22.     $output = curl_exec($ch);
  23.         $html = str_get_html($output);
  24.         //echo $html->find('div#page', 0)->find('a');
  25.         foreach ($html->find('div#page') as $pages)
  26.         {
  27.                 foreach ( $pages->find('a[class=""]') as $pag)
  28.                 {
  29.                    
  30.                     $pagArray [] = $pag->href; //almaceno la urls para paginar
  31.             //      echo 'pag'. $pag->plaintext.",$href ->href\n";
  32.                 }
  33.         }
  34.        
  35.         for ($i =0; $i < count( $pagArray); $i++ )
  36.         {
  37.             $urlP = $url.$pagArray[$i];
  38.             $ch = curl_init($urlP);
  39.             curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
  40.             curl_setopt($ch, CURLOPT_POSTFIELDS, $formArray);
  41.             curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  42.             $output = curl_exec($ch);
  43.             $content = str_get_html($output);
  44.             echo "$urlP\n";
  45.             foreach ( $content->find('div[class="clearfix"]') as $vacs)
  46.                 {
  47.                     foreach ( $vacs->find('h3/a')  as $v)
  48.                         echo $v->plaintext."\n"; //aqui duplica el titulo
  49.             //      echo 'pag'. $pag->plaintext.",$href ->href\n";
  50.                 }
  51.         //  echo $urlP."\n";
  52.         }
Este son parte de los resultados como ven se duplican cuando solo aparecen una vez, y es el mismo resultado para todas las paginas que recorro.
Cita:
Store Assistant
Store Assistant
Plant Fitter
Plant Fitter
Library Assistant x 2
Library Assistant x 2
Foster carers urgently needed
Foster carers urgently needed
Este lo voy a poner en un cron para que se ejecute cada cierto tiempo asi que no va ejecutarse en el navegador.

De antemano muchas gracias.

Etiquetas: curl
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 18:57.