Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/04/2012, 16:19
sirpyerre
 
Fecha de Ingreso: enero-2011
Ubicación: Puebla
Mensajes: 9
Antigüedad: 14 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.