[Ayuda] Como sacar informacion de una web con php

Iniciado por K4, 10 Diciembre 2007, 02:35 AM

0 Miembros y 1 Visitante están viendo este tema.

K4

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:

Código (php) [Seleccionar]

<?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  ;)


Con sangre andaluza :)


K4

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

K4

#3
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