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...
$sql= mysql_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($ch, CURLOPT_URL, "ports.com/sea-route/#/?a=$i&b=$j;");
sleep(5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$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
$insert= mysql_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());
}
}
}
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!!!