Foros del Web » Programando para Internet » PHP »

Sacar info de una pagina con php y cURL

Estas en el tema de Sacar info de una pagina con php y cURL en el foro de PHP en Foros del Web. Hola amigos! soy un poco neófito en esto del php, por eso les pido que me tiren una ayuda con un problema que tengo... Tengo ...
  #1 (permalink)  
Antiguo 12/10/2011, 13:54
 
Fecha de Ingreso: octubre-2011
Ubicación: Mendoza
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Exclamación Sacar info de una pagina con php y cURL

Hola amigos! soy un poco neófito en esto del php, por eso les pido que me tiren una ayuda con un problema que tengo...
Tengo que crear una base de datos con la distancia entre los diferentes puertos del mundo...
el tema es que la base de datos no existe como tal en ningún lado... al menos gratuitamente...
hay dos pag web que me permitirían sacar la info que necesito:

http://ports.com/sea-route/
http://www.searates.com/reference/portdistance/

he creado un script en php usando cURL y la 1º pag (ports.com) pero no me funciona ya que el contenido lo carga con javascript o ajax y cURL sólo me devuelve el html...

Código PHP:
require_once('Connections/conectpuertos.php'); //me conecto a la DB
mysql_select_db("pruebaphp");
set_time_limit(100);
    for (
$i=5$i<=6$i++){    //los puertos 1 al 5 no existen...
        
$sqlmysql_query("CREATE TABLE `puerto_$i` (`id` INT NOT NULL AUTO_INCREMENT ,`nombrepuertoA` VARCHAR( 50 ) NOT NULL ,`nombrepuertoB` VARCHAR( 50 ) NOT NULL , `distancia` INT NOT NULL, `tiempo` FLOAT( 100, 1 ) NOT NULL, PRIMARY KEY ( `id` )) ENGINE = MYISAM;")or die(mysql_error()); //creo una tabla para cada puerto...
            
for ($j=$i+1;$j<=15989;$j++){
                
$ch curl_init();
                
curl_setopt($chCURLOPT_URL"ports.com/sea-route/#/?a=$i&b=$j;"); 
                
sleep(5);     
                
curl_setopt($chCURLOPT_RETURNTRANSFER1);
                
$html curl_exec($ch);
                
curl_close($ch);
                
                
//encontrar distancia uso expresiones regulares
                
$distancia '/<span class="route-highlight" id="route-d">([0-9]+)<\/span>/isU'
                
preg_match($distancia$html$result);
                
$dist=$result[1];
                
                
                
//encontrar tiempo
                
$tiempo '/<span class="route-highlight highlight" id="route-days">([0-9]+\.[0-9])<\/span>/isU';
                
preg_match($tiempo$html$result1);
                
$tpo=$result1[1];
                
                
                
                
$patronpuertoA '/<input type="text" name="start" id="start-port" tabindex="1" class="span-7 title"value="((([\w]+)\s)+([\w]+),\s[\w]+)" \/>/'

                
preg_match($patronpuertoA$html$result2);
                
$puertoA=$result2[1];
                
                
                
$patronpuertoB '/<input type="text" name="start" id="end-port" tabindex="2" class="span-7 title"value="((([\w]+)\s)+([\w]+),\s[\w]+)" \/>/'

                
preg_match($patronpuertoB$html$result3);
                
$puertoB=$result3[1];
                
                if(isset(
$dist,$tpo,$puertoA,$puertoB)){
                
// inserto los valores en la tabla
                
$insertmysql_query("INSERT INTO `puerto_$i` (id, nombrepuertoA, nombrepuertoB, distancia, tiempo) values (null, '$puertoA', '$puertoB', '$dist', '$tpo')") or die(mysql_error());
                
//selecciono la tabla para mostrarla
                //$show= mysql_query("SELECT id, nombrepuertoA, nombrepuertoB, distancia, tiempo FROM `puerto_$i` WHERE id=1") or die(mysql_error());
                
}
            }
    } 
Este script me devuelve el html vacío o se las etiquetas sin la info que necesito, ya que supongo que la carga de los datos se maneja por otro medio que no es PHP...
Estuve bien también algo de la clase Snoopy de PHP pero no entiendo bien como se maneja ni si me serviría...
Me gustaría saber si tienen alguna recomendación o aporte para hacerme, no se como encarar al tema, si existe alguna forma de extraer la info que necesito...
Gracias por tu colaboración!
Saludos!!!
  #2 (permalink)  
Antiguo 12/10/2011, 14:32
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 14 años, 1 mes
Puntos: 511
Respuesta: Sacar info de una pagina con php y cURL

Hola que tal.

Checa esto te puede servir de mucho http://www.forosdelweb.com/f18/aport...equest-724214/

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #3 (permalink)  
Antiguo 13/10/2011, 06:52
 
Fecha de Ingreso: octubre-2011
Ubicación: Mendoza
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Sacar info de una pagina con php y cURL

Hola skiper0125! Gracias por tu aporte, pero el problema no lo tiene el curl... anda perfecto, el problema es que el curl me devuelve la pag sin datos...
la pagina: http://ports.com/sea-route/ tiene dos formularios con los puertos de origen y destino y un submit que dice "Calculate", uno normalmente si entra en esta página llena los form y presiona "Calculate". Entonces la pagina carga el resultado con js o con ajax, no se redirecciona... el problema es que cURL no capta esta carga de datos y me devuelve la página en blanco, es decir sin los datos cargados por js o ajax, lo que yo quiero son esos datos. El tema es que no se si hay algún medio para obtenerlos, por eso les pido su colaboración...

Etiquetas: class, curl, curlymysql, datos..., mysql+php, snoopy
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 21:19.