Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/10/2011, 13:54
bismark64
 
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!!!