Foros del Web » Programando para Internet » PHP »

Leer codigo fuente y guardar datos

Estas en el tema de Leer codigo fuente y guardar datos en el foro de PHP en Foros del Web. Hola quiero crearme una funcion que pansandole una url coja datos del codigo fuente y los guarde en una base de datos. Concretamente son paginas ...
  #1 (permalink)  
Antiguo 07/06/2010, 11:22
 
Fecha de Ingreso: diciembre-2007
Mensajes: 14
Antigüedad: 16 años, 4 meses
Puntos: 0
Leer codigo fuente y guardar datos

Hola quiero crearme una funcion que pansandole una url coja datos del codigo fuente y los guarde en una base de datos. Concretamente son paginas con muchas imagenes y quiro guardar la direccion de dichas imagenes.

Leyendo el foro encontre este condigo que me sirve para leer una url y guardar el titulo de la pagina.


Código:
<?php
$url = 'http://www.forosdelweb.com/index.php';
$file = @ fopen($url,"r") or die ("No se pudo leer el destino");
$text = fread($file,16384);
if (preg_match('/<title>(.*?)<\/title>/is',$text,$found)) {
$title = $found[1];
}
else { $title = " No se encontr&oacute; t&iacute;tulo "; }

?>

Informaci&oacute;n de: <?php echo($url); ?><br />

<p>Se encontr&oacute;:<br />
Title - <?php echo ($title)."<br />";

 ?>
Funciona perfectamente, asi que intente modificar la regla del preg_match para que sirviera en el ejemplo pero no hay manera.

La pagina siemrpe tiene la misma estructura:

Código:
<img src="http://dominio.com/imagenes/123455421.jpg" alt=imagen"
Por lo que yo prentendo coger esa url, auque me bastaria con saber solo el nombre del .jpg.

He intentado con diferenres variantes:

Código:
if (preg_match('/<img src="(.*?)" alt/is',$text,$found2))
O esta otra

Código:
if (preg_match('/imagenes/(.*?).jpg/is',$text,$found2))
Pero nada, aver si podeis ayudarme con la expresion regular que tengo que poner.

Gracias
  #2 (permalink)  
Antiguo 07/06/2010, 14:55
 
Fecha de Ingreso: diciembre-2007
Mensajes: 14
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Leer codigo fuente y guardar datos

Tambien en este mismo foro encontrae
Código:
$text="Alemania (ALE) vs Argentina (ARG)";
$text=explode(")",$text);
foreach ($text as $paises)
{
	$paises.=")";
	preg_match('#\((.*?)\)#', $paises, $match); 
	print $match[1]; 
}
Que practicamente es lo que yo busco pero en vez de buscar lo que hay entre () busco lo que hay entre "" y no lo puedo meter en las reglas ya que es un comando de la propia funcion.
  #3 (permalink)  
Antiguo 07/06/2010, 15:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Leer codigo fuente y guardar datos

Código:
/src="(.*?)"/is
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 07/06/2010, 15:42
 
Fecha de Ingreso: diciembre-2007
Mensajes: 14
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Leer codigo fuente y guardar datos

Hola, he provado esa regla con una variable y efectivamente funciona (muchas gracias por contestar), pero al meterle toda la web ya no funciona. Asi que me centrado tanto en el preg_match que no me dado cuenta que el error puede estar en otro sitio.

Si ya la comparacion funciona, el unico problema es que no lea bien los valores...
yo lo hago asi:

Código:
$url = 'http://www.forosdelweb.com/index.php';
$file = @ fopen($url,"r") or die ("No se pudo leer el destino");
$text = fread($file,16384);
¿Esta correcto? He leido por hay que lo maximo que lee el fread son 8192, por tanto si la pagina es muy grande quiza no lea todo no?
  #5 (permalink)  
Antiguo 07/06/2010, 15:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Leer codigo fuente y guardar datos

en dicho caso es mejor usar file_get_contents()
http://php.net/file_get_contents

y quizá el problema esta en que preg_match() solo devuelve las primeras coincidencias, entonces deberías usar preg_match_all()
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 07/06/2010, 15:47
 
Fecha de Ingreso: diciembre-2007
Mensajes: 14
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Leer codigo fuente y guardar datos

Comprobado el problema es que la pagina es demasiado larga. He provado comparar con parametros que estan al princpio de la pagina y si van..

Asi que me leere el manual de fread aver si hay alguna manera para que empize a leer desde la mitad del archivo para que los 8192 esten dentro de lo que busco.

Cualquier sugerencia es bienvenida.

Voy a probar el file_get_contents() quiza esa sea mi solucion.

De nuevo gracias
  #7 (permalink)  
Antiguo 07/06/2010, 16:42
 
Fecha de Ingreso: diciembre-2007
Mensajes: 14
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Leer codigo fuente y guardar datos

SOLUCIONADO.

Para la gente que tenga el mismo problema, para archivo muy grandes en vez de abrir el arhivo asi:

Código:
$url = "www.miweb.com"
$file = @ fopen($url,"r") or die ("No se pudo leer el destino");
$text = fread($file,16384);
hay que abrirlo

Código:
$url = "www.miweb.com"
$text = file_get_contents($url);
Gracias por todo pateketrueke

Etiquetas: preg_match, fuentes
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:11.