Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/04/2012, 09:01
sirpyerre
 
Fecha de Ingreso: enero-2011
Ubicación: Puebla
Mensajes: 9
Antigüedad: 13 años, 3 meses
Puntos: 0
CURL y Cookies

Hola Buenos días, espero me puedan ayudar.
Quiero hacer un bot para recolectar los anuncios (Titulo y url del anuncio) de esta 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 búsqueda los cuales pueden estar vacíos.
He hecho esto con curl. El problema es que solo me muestra el resultado de la primera pagina si yo cambio a otra pagina me sigue mostrando los resultados de la primera.
Pego mi código.

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=1'; //pagina con resultados
  5. $url2 = 'http://www.jobstoday.co.uk/cgi-bin/advsearch?rownum=26'; //pagina con resultados
  6. $cookie = tempnam('/tmp', 'COOKIE_');
  7. $formArray = array(
  8.     'fp_skill_include' => '',
  9.     'location_include' => ''
  10.         ); //arreglo con las variables de post
  11.  
  12. $ch = curl_init($url);
  13. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); //guardo la cookie
  14. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // devuelve el resultado
  15. $output = curl_exec($ch);
  16. echo "$url2 ----------------------------------->\n";
  17. $ch = curl_init($url2);
  18. curl_setopt($ch, CURLOPT_POSTFIELDS, $formArray); //petición http post
  19. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //para utilizar la cookie guardada
  20. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  21. $output = curl_exec($ch);
  22. $html = str_get_html($output); //vacio el resultado html para despues buscar los selectores de titulo y url
  23.  
  24. foreach ($html->find('//*[@id="vacs"]') as $pages)
  25. {
  26.     foreach ($content = $pages->find('h3/a') as $vacs)
  27.         echo $vacs->plaintext   ."\n"; //Titulo de los anuncios
  28. }


Muchas gracias por su ayuda