Holas
Alguien sabe como puedo sacar informacion publicada en una web para luego poder procesarla y guardarla en mi BD. Los datos estan publicados en texto simple dentro de la web.
Me gustaria hacerlo con php, pero si saben como hacerlo con otro lenguaje diganmelo tmb , gracias
Cita de: K4 en 10 Diciembre 2007, 02:35 AM
Holas
Alguien sabe como puedo sacar informacion publicada en una web para luego poder procesarla y guardarla en mi BD. Los datos estan publicados en texto simple dentro de la web.
Me gustaria hacerlo con php, pero si saben como hacerlo con otro lenguaje diganmelo tmb , gracias
Pues puedes con cURL, mira:
<?php
//bot mcgrahill espanol
function conectar($host, $user, $pass, $database){
$conectar = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($database,$conectar);
return $conectar;
}
$conexion=conectar("algo","algomas","mas","tienda");
$data=file('lista_mcgrawhill.txt');
$num=count($data);
$i=0;
function get_content($url){
}
/*function get_content($url){
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HEADER, 0);
ob_start();
curl_exec ($ch);
curl_close ($ch);
$string = ob_get_contents();
ob_end_clean();
return $string;
}*/
for($i;$i<$num;$i++){
$datos_nuevos=$data[$i];
$datos_nuevos=explode("\t",$datos_nuevos);
$content_titulo = get_content("http://www.oceano.com.mx/libro_detalle.asp?isbn=".$datos_nuevos[8]);
//Sacar imagen grande
$content_imagen_giga=get_content("http://www.oceano.com.mx/detallelibroimpresion2.asp?isbn=".$datos_nuevos[8]);
$expCadena1_imagen_giga=explode("<IMG SRC=\"", $content_imagen_giga);
$expCadena2_imagen_giga=explode("\" HSPACE=\"10\" VSPACE=\"0\">", $expCadena1_imagen_giga[1]);
//Sacar formato
$content_formato = get_content("http://www.oceano.com.mx/libro_detalle.asp?isbn=".$datos_nuevos[8]);
$expCadena1_formato = explode("<TD BGCOLOR=\"#FFFFFF\" class=\"Estilo17\"><span class=\"Estilo32\">", $content_formato);
$expCadena2_formato = explode("</font></font> </span></TD>", $expCadena1_formato[1]);
$expCadena2_formato[0]=str_replace("<font color=\"#000000\"><font color=\"#000000\">","",$expCadena2_formato[0]);
$formato_final=$expCadena2_formato[0];
//declaramos la basura
$basura_formato=array("(gramos)","(cm)","\r\n");
//quitamos la basura
$formato_final=str_replace($basura_formato,"",$formato_final);
$formato_final=str_replace("/", "x",$formato_final);
//hacemos un array por cada corte de X
$formato_final=explode("x",$formato_final);
//Codigo barkua
$better_token = md5(uniqid(rand(), true));
//coleccion viene vacia?
if($datos_nuevos[5]!=""){
$coleccion_final="1";
}
else{
$coleccion_final="0";
}
//Obtenemos la desc
$content = get_content("http://www.oceano.com.mx/libro_detalle.asp?isbn=".$datos_nuevos[8]);
$expCadena1 = explode("Estilo27\">", $content);
$expCadena2 = explode("<span class=\"Estilo17\">", $expCadena1[1]);
$expCadena2[0]=str_replace("\r\n","",$expCadena2[0]);
//Saca ano
$content_ano = get_content("http://www.oceano.com.mx/libro_detalle.asp?isbn=".$datos_nuevos[8]);
$expCadena1_ano = explode("<TD colspan=\"2\" BGCOLOR=\"#FFFFFF\" class=\"Estilo17\"><span class=\"Estilo32\">", $content_ano);
$expCadena2_ano = explode("/<font color=\"#000000\">", $expCadena1_ano[1]);
$expCadena2_ano[0]=str_replace("1a","",$expCadena2_ano[0]);
$expCadena2_ano[0]=str_replace("/","",$expCadena2_ano[0]);
$expCadena2_ano[0]=trim($expCadena2_ano[0]);
$formato_final[3]=trim($formato_final[3]);
$formato_final[1]=trim($formato_final[1]);
$formato_final[0]=trim($formato_final[0]);
$expCadena2_ano[0]=str_replace("/","",$expCadena2_ano[0]);
$expCadena2_ano[0]=trim($expCadena2_ano[0]);
$coleccion_final="0";
//Rutina para imagen
/*$archivo= "http://www.oceano.com.mx/".$expCadena2_imagen_giga[0];
$destino = "fotos_libros/lib_".$datos_nuevos[8].".jpg";
copy($archivo, $destino);*/
$titulo=$datos_nuevos[2];
$autor=$datos_nuevos[1];
$editorial='2';
$precio2007=$datos_nuevos[6];
$isbn=$datos_nuevos[0];
$codigo_barra=$datos_nuevos[5];
$tema=$datos_nuevos[3];
$ano=$datos_nuevos[4];
$descripcion=ltrim($descripcion);
$descripcion=rtrim($descripcion);
$titulo=ucfirst(strtolower($titulo));
$descripcion=ucfirst(strtolower($descripcion));
$autor=ucfirst(strtolower($autor));
$editorial=ucfirst(strtolower($editorial));
$coleccion=ucfirst(strtolower($coleccion));
$tema=ucfirst(strtolower($tema));
$titulo=htmlentities($titulo,ENT_QUOTES,'UTF-8');
$descripcion=htmlentities($descripcion,ENT_QUOTES,'UTF-8');
$autor=htmlentities($autor,ENT_QUOTES,'UTF-8');
$editorial=htmlentities($editorial,ENT_QUOTES,'UTF-8');
$coleccion=htmlentities($coleccion,ENT_QUOTES,'UTF-8');
$tema=htmlentities($tema,ENT_QUOTES,'UTF-8');
$sql_ingreso="
INSERT INTO `dbarkuac_tienda`.`libros`(
`id`,`titulo`,`subtitulo`,`descr_corta`,`descr_larga`,
`tema`,`subtema`,`codigo_barkua`,`codigo_barras` ,
`isbn`,`autores`,`editoriales_id`,`edicion`,`num_pags`,
`coleccion`,`coleccion_titulo`,`coleccion_pzas`,`peso`,
`dimensiones_largo`,`dimensiones_ancho`,`dimesiones_espesor`,
`foto_url`,`foto2_url`,`foto3_url`,`pdf_interiores_url`,
`palabras_clave`,`promedio`,`agregado_por`,`fecha_agregado`,
`modificado_por`,`fecha_modificado`,`fecha_ultima_venta`,
`cantidad_vendida`,`existencias`,`notas`,`precio_compra`,
`precio_venta`,`precio_oferta`)
VALUES (NULL , '".$titulo."' , NULL , NULL , '".$descripcion."',
'".$tema."', NULL, '".$better_token."', '".$codigo_barra."',
'".$isbn."' , '".$autor."', '".$editorial."', '".$ano."', NULL , '".$coleccion_final."',
'".$coleccion."', NULL , '".$peso."','".$largo."',
'".$ancho."', '".$espesor."' , '".$destino."', NULL , NULL,
'0', NULL , '0', NULL , '".$fecha_hoy."', NULL , NULL , NULL , '0', '".$existencias."',
NULL , '', '".$precio_final."', '');";
$graba_todo=mysql_query($sql_ingreso,$conexion);
if(!$graba_todo){
echo mysql_errno($conexion) . ": " . mysql_error($conexion). "\n";
}
echo "Registro no. <b>".$i."</b><br>";
//sleep(5);
}
?>
</pre>
Lo hizo uno de mis programadores, obvio se puede mejorar con ee.rr, si tienes duda avisanos ;)
Muchas Gracias por el dato, lo estoy probando...
Lo que no entiendo es como funciona la funcion get_content,
por lo que entedi recupera el codigo html de la apgina es correcto?
en el codigo que me pegaste esta comentada, esto es correcto?
Desde ya muchas gracias a vos y a tu programador, Un saludo
Cita de: K4 en 11 Diciembre 2007, 02:16 AM
Muchas Gracias por el dato, lo estoy probando...
Lo que no entiendo es como funciona la funcion get_content,
por lo que entedi recupera el codigo html de la apgina es correcto?
en el codigo que me pegaste esta comentada, esto es correcto?
Desde ya muchas gracias a vos y a tu programador, Un saludo
Ya lo hice andar, pero me anda solo con algunas paginas, por ejemplo probando con la web de tu ejemplo hice
$content_titulo = get_content("http://www.oceano.com.mx/");
echo "content: ".$content_titulo;
y no me recupera nada, tenes idea a que se puede deber?
Tmb te pido si me explicas un poco mas la funcion que creaste get_content, porque no tengo del todo claro como funciona.
Gracias por todo
y saludos