Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: hchabot en Abril 23, 2016, 12:25:27 PM

Título: Ayuda: cómo hacer este Scraping
Publicado por: hchabot en Abril 23, 2016, 12:25:27 PM
Hola, lo hepreguntado en otro foro, pero nadie me sabe decir como se haria este scraping.

Bien lo explico un poco: quiero sacar unas imagenes incrustadas en una tabla bajo php la url es : http://www.meteoval.com/Prevision/Previsionlasolana.html, las imagenes son los soles, nubes y llivia. Son .gif que van cambiando segun el dia y la hora.

Con estas imagenes las quiero incluir en mi web en una imagen de fondo ya prediseñada esta es la url: http://atodaradio.es/13.jpg, la localizacion de la imagen a atraer se pondria por coordenadas en la imagen.

hasta ahora solo he podido traer la tabla entera que esta sobre ifarmes, nada mas. Logicamente aqui me pierdo.

$html = file_get_html('<iframe style="width:950px;height:610px" src="http://www.meteoval.com/Prevision/lasolana1.php"></iframe>');

El resultado del supuesto codigo seria este: , pero esto es con corta y pega sobre un editor de fotos.

Perdon, logicamente las imagenes se cambierian en mi web, por unas ya prediseñadas.

Es un pequeño matiz que se me olvidaba, por si las imagenes originales tienen dderecho de autor.

Quiero que se haga automaticamante.

Muchas Gracias ante todo
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: blackdrake en Abril 23, 2016, 06:21:36 PM
Es algo sencillo, el td de las imágenes es el único con ese atributo de width y height, puedes scrappear por ahí y luego, una vez tengas los datos que quieres, mostrarlos en tu web, para cambiar las imágenes basta con nombrarlas con el mismo o nombre, si lo quieres editar, deberás de parsearlo y modificarlo en caliente.

Por si tienes dudas, me refiero a estas líneas:

Código (html5) [Seleccionar]

<td width="65" height="50">*</td>


Un saludo.

Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: hchabot en Abril 24, 2016, 05:31:29 AM
Segun vi en todos lo video tutoriales, todos apuntaban a eso, pero cuando trato de llamar la imagen por el nombre o por la extension o incluso por las medidas no me sale. basicamente me quede en el punto de traer la tabla...

Otro problema a tener en cuenta es que las imagenes son cambiantes.... me explico en prevision de hoy a las 9 no es la misma imagen que seria mañana a las 9... jejejeje lo veras facil, pero esto para mi o es un mundo o es perder mas de una hora diaria para hacer esta sola imagen  :'( :'( :'( :'( :'( :'( :'( :'(
El cambiar las imagenes no seria complicado, por que seria decirle que si aparece la imagen 3.gif, por ejemplo es que en mi web ponga la imagen por ejemplo sol.gif. eso no seria problema, vamnos pienso yo....

Como scrapeo
Citarel td de las imágenes es el único con ese atributo de width y height, puedes scrappear
por que le digo este codigo <?php
$url 
'http://www.meteoval.com/Prevision/Previsionlasolana.html'
$html file_get_html('$url');

$img $post-> find[class=td] ('img',0)
echo 
$img,"\n\n"

?>
y nada no sale, por lo menos ver unas imagen sobre un fondo blanco....

GRACIAS POR CONTESTAR

Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: seth en Abril 24, 2016, 10:06:18 PM
Que libreria estas usando? no veo ningun include y esa funcion no es de php

Modifica el php.ini para que muestre los errores
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: blackdrake en Abril 25, 2016, 06:24:20 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Segun vi en todos lo video tutoriales, todos apuntaban a eso, pero cuando trato de llamar la imagen por el nombre o por la extension o incluso por las medidas no me sale. basicamente me quede en el punto de traer la tabla...

Otro problema a tener en cuenta es que las imagenes son cambiantes.... me explico en prevision de hoy a las 9 no es la misma imagen que seria mañana a las 9... jejejeje lo veras facil, pero esto para mi o es un mundo o es perder mas de una hora diaria para hacer esta sola imagen  :'( :'( :'( :'( :'( :'( :'( :'(
El cambiar las imagenes no seria complicado, por que seria decirle que si aparece la imagen 3.gif, por ejemplo es que en mi web ponga la imagen por ejemplo sol.gif. eso no seria problema, vamnos pienso yo....

Como scrapeo
Citarel td de las imágenes es el único con ese atributo de width y height, puedes scrappear
por que le digo este codigo <?php
$url 
'http://www.meteoval.com/Prevision/Previsionlasolana.html'
$html file_get_html('$url');

$img $post-> find[class=td] ('img',0)
echo 
$img,"\n\n"

?>
y nada no sale, por lo menos ver unas imagen sobre un fondo blanco....

GRACIAS POR CONTESTAR

Tu código está lleno de errores, además, se nota que has hecho un copy-paste, prueba este código, no está terminado, básicamente porque no voy a hacerte el trabajo y porque quiero que aprendas, desde aquí, si usas bien el explode, estoy seguro que lo conseguirás :P

De todas formas, puedes utilizar alguna libreria de php para agilizar ese proceso.

Código (php) [Seleccionar]

<?php
$url 
'http://www.meteoval.com/Prevision/lasolana1.php';
$html file_get_contents($url);

$imgs explode("<td width='65' height='50'"$html);

echo 
"<pre>";
print_r($imgs);
echo 
"</pre>";

?>



Un saludo.
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: hchabot en Abril 25, 2016, 11:45:43 AM
Algo avanzo... y ahora sale esto

CitarWarning: file_get_contents(http://www.meteoval.com/Prevision/lasolana1.php): failed to open stream: Permission denied in /home/www/atodaradio.es/index.php on line 13

Array
(
   
  • =>
    )
ZASS me he dado de cruces....

el codigo es:

Citar<?php
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://###.##.##.##/mp/get?mpsrc=http://mybucket.s3.amazonaws.com/11111.mpg&mpaction=convert format=flv');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Your application name');
$query = curl_exec($curl_handle);
curl_close($curl_handle);

$url = 'http://www.meteoval.com/Prevision/lasolana1.php';
$html = file_get_contents($url);

$imgs = explode("<td width='65' height='50'", $html); 

echo "<pre>";
print_r($imgs);
echo "</pre>";


?>
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: blackdrake en Abril 25, 2016, 02:17:55 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Algo avanzo... y ahora sale esto

CitarWarning: file_get_contents(http://www.meteoval.com/Prevision/lasolana1.php): failed to open stream: Permission denied in /home/www/atodaradio.es/index.php on line 13

Array
(
   
  • =>
    )
ZASS me he dado de cruces....

el codigo es:

Citar<?php
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://###.##.##.##/mp/get?mpsrc=http://mybucket.s3.amazonaws.com/11111.mpg&mpaction=convert format=flv');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Your application name');
$query = curl_exec($curl_handle);
curl_close($curl_handle);

$url = 'http://www.meteoval.com/Prevision/lasolana1.php';
$html = file_get_contents($url);

$imgs = explode("<td width='65' height='50'", $html); 

echo "<pre>";
print_r($imgs);
echo "</pre>";


?>

WTF? Creo que estás copiando código sin ni siquiera intentar preocuparte por lo que realiza.

Para que realizas un curl? para que la haces a una web de amazon?

Y por último podrías fijarte en los errores que te devuelven:

Warning: file_get_contents(http://www.meteoval.com/Prevision/lasolana1.php): failed to open stream: Permission denied in /home/www/atodaradio.es/index.php on line 13

El código que te di, es funcional y ahí está todo lo que necesitas, podré ayudarte en dudas, pero no pienso hacerte el trabajo si no pones ni un poco de tu parte.

Saludos.
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: hchabot en Abril 25, 2016, 02:37:57 PM
Cuando me ha salido el error, he buscado el por qué salia ese error, una chica comentaba esto y la verdad no he mirado a fondo el código,  pero pensaba que podría tenerlo bloqueado. He mirado el método curl por que he visto un manual sobre este tema, pero no explica sobre imágenes.


Y la verdad no quiero que me hagas el código,  más bien quiero hacerlo yo cueste lo que cueste. Y sobre todo no sabes lo que te agradezco la ayuda que estas haciendo por mi.

Volviendo al tema tengo una dudas:


Que significa el error ese que me sale y el código saca copia de la imagen, pero no tendría que indicarle yo las imágenes y la carpeta donde están?

De primeras no me salia por que de primeras lo estaba grabando en una extensión .html en vez de .php  ya te digo que que soy un desastre.
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: blackdrake en Abril 26, 2016, 06:36:47 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Cuando me ha salido el error, he buscado el por qué salia ese error, una chica comentaba esto y la verdad no he mirado a fondo el código,  pero pensaba que podría tenerlo bloqueado. He mirado el método curl por que he visto un manual sobre este tema, pero no explica sobre imágenes.


Y la verdad no quiero que me hagas el código,  más bien quiero hacerlo yo cueste lo que cueste. Y sobre todo no sabes lo que te agradezco la ayuda que estas haciendo por mi.

Volviendo al tema tengo una dudas:


Que significa el error ese que me sale y el código saca copia de la imagen, pero no tendría que indicarle yo las imágenes y la carpeta donde están?

De primeras no me salia por que de primeras lo estaba grabando en una extensión .html en vez de .php  ya te digo que que soy un desastre.

Básicamente estás mezclando código, si lo haces con curl, no lo haces con file_get_contents y viceversa...

Con este código conseguirás todas las imágenes (las 8 que hay). (Obviamente, tienes que descargarlas antes para que se muestren sin errores)

Código (php) [Seleccionar]
<?php
$url 
'http://www.meteoval.com/Prevision/lasolana1.php';
$html file_get_contents($url);

$imgs explode("<td width='65' height='50'"$html);

/*echo "<pre>";
print_r($imgs);
echo "</pre>";*/

for ($i=1;$i<=8;$i++){
limpiar_imagen($imgs[$i]);
}

function 
limpiar_imagen($info){
$limpio explode("<table",$info);
$imagen explode(">",$limpio[0]);
$imagen $imagen[1]."/>";
echo $imagen;
}

?>


Saludos.
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: fleshworm en Abril 26, 2016, 07:02:56 AM
Saludos, bueno si te estoy entendiendo quieres o necesitas modelar un systema parecido al utilizado en la tabla donde lo unico que cambiarias serian las imagenes por unas prediseñadas para evitar infringir los derechos de autor pero ademas necesitas estudiar al API de moderacion que permite cambiar las imagenes segun el clima o coordenadas para que este no interfiera con tu version o intentas crear una version actualisada o personalisada del mismo script? En el caso de una version implementada te diria que intentes leer algu de cURL y html->Dom para que entonces elavores una tecnica que cumpla con tus necesidades.

PD: Esto si es que te entiendo bien y lo que intentas es un servicio de red fuera de la maquina local del systema que nos muestras.
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: hchabot en Abril 26, 2016, 10:35:33 AM
CitarSaludos, bueno si te estoy entendiendo quieres o necesitas modelar un systema parecido al utilizado en la tabla donde lo unico que cambiarias serian las imagenes por unas prediseñadas para evitar infringir los derechos de autor pero ademas necesitas estudiar al API de moderacion que permite cambiar las imagenes segun el clima o coordenadas para que este no interfiera con tu version o intentas crear una version actualisada o personalisada del mismo script? En el caso de una version implementada te diria que intentes leer algu de cURL y html->Dom para que entonces elavores una tecnica que cumpla con tus necesidades.

PD: Esto si es que te entiendo bien y lo que intentas es un servicio de red fuera de la maquina local del systema que nos muestras.

MAS O MENOS. mi intencion es traer las imagenes segun las horas y el dia y que cuando apareca por ejemplo sol.gif en la tabla, yo lo que quiero es que aparezca en el area de una imagen prediseñada un sol prediseñado por mi.

Osea es basicamente si es sol elige de la carpeta /Gif/ Sol.gif y medante coredandas que aparezca sobre una imagen en un punto determinado.

    <?php
    $url 
'http://www.meteoval.com/Prevision/lasolana1.php';
    
$html file_get_contents($url);
     
    
$imgs explode("<td width='65' height='50'"$html);
     
    
/*echo "<pre>";
    print_r($imgs);
    echo "</pre>";*/
     
    
for ($i=1;$i<=8;$i++){
            
limpiar_imagen($imgs[$i]);
    }
     
    function 
limpiar_imagen($info){
            
$limpio explode("<table",$info);
            
$imagen explode(">",$limpio[0]);
            
$imagen $imagen[1]."/>";
            echo 
$imagen;
    }
     
    
?>

Si pongo el codigo asi me aparece el error de
CitarWarning: file_get_contents(http://www.meteoval.com/Prevision/lasolana1.php): failed to open stream: Permission denied in /home/www/atodaradio.es/index.php on line 3
, lo que me veo obligado a hacer es añadir una arroba (@) delante de file_get_contents($url); y es cuando desaparece el error. Como ya me comento blackdrake no podia mezclar librerias y he mirado por ahi manuales, pero la gran mayoria, por no decir todos son de textos o titulos. ninguno esta basado en imagenes. Si sabeis de algun manual sobre extracction de imagenes decirmelo






Pregunta del millon... donde cargo las imagenes, actualmente estan en la carpeta raiz con el mismo nombre que de la pagina original... Tambien estan en una carpeta llamada Gif/

pero sale asi:

/>/>/>/>/>/>/>/>

(http://atodaradio.es/pantallazo.jpg)
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: fleshworm en Abril 26, 2016, 01:08:35 PM
Saludos, te comento si tienes de alguna forma acceso al administrador del servicio o creador del script te ahorarias bastante tiempo en corregir errores como los que mencionas ya que si este ha configurado su dominio o servicio para evitar hotlinking, leech o enlaces externos por mas que te esfuerces en hacer un buen modd personalisado este te tratara de evadir cambiando la manera en que provee o administra sus recursos.

Algo breve, encuanto al metodo que utilisas recuerda que estas intentando de modelar un recurso sobre un servicio que quiza sea implementado bajo practicas de programacion distintas a las que utilisas o te interesan y quiza encima de ello tenga permisos o cifrado que no conformarian el sacrificio te va a tomar algo de tiempo.

PD: Podrias intentar forzar la descarga del documento examinar que no utilize algun cifrado o recurso que te prohiba la manipulacion externa de los componentes y modelar una herramienta que cumpla con tus necesidades o metas. Y como te abia comentado en PHP hay una libreria o componente de su matriz que se utiliza para la administracion y manipulacion de servicios o elementos web que te podria venir bien hecharle un ojo Lib cURL
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: hchabot en Abril 26, 2016, 01:39:24 PM
A que te refieres con acceso al administrador del servicio o creador del script, logicamente soy el administrador del dominio atodaradio.es, pero no del de meteoval.com.

No puedo subirte el codigo de meteoval, pero el unco scrip que tiene es uno de menus desplegables.

A madre que cebradero de cabeza... pensaba que iba a ser mas facil....
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: blackdrake en Abril 26, 2016, 03:03:34 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
CitarSaludos, bueno si te estoy entendiendo quieres o necesitas modelar un systema parecido al utilizado en la tabla donde lo unico que cambiarias serian las imagenes por unas prediseñadas para evitar infringir los derechos de autor pero ademas necesitas estudiar al API de moderacion que permite cambiar las imagenes segun el clima o coordenadas para que este no interfiera con tu version o intentas crear una version actualisada o personalisada del mismo script? En el caso de una version implementada te diria que intentes leer algu de cURL y html->Dom para que entonces elavores una tecnica que cumpla con tus necesidades.

PD: Esto si es que te entiendo bien y lo que intentas es un servicio de red fuera de la maquina local del systema que nos muestras.

MAS O MENOS. mi intencion es traer las imagenes segun las horas y el dia y que cuando apareca por ejemplo sol.gif en la tabla, yo lo que quiero es que aparezca en el area de una imagen prediseñada un sol prediseñado por mi.

Osea es basicamente si es sol elige de la carpeta /Gif/ Sol.gif y medante coredandas que aparezca sobre una imagen en un punto determinado.

    <?php
    $url 
'http://www.meteoval.com/Prevision/lasolana1.php';
    
$html file_get_contents($url);
     
    
$imgs explode("<td width='65' height='50'"$html);
     
    
/*echo "<pre>";
    print_r($imgs);
    echo "</pre>";*/
     
    
for ($i=1;$i<=8;$i++){
            
limpiar_imagen($imgs[$i]);
    }
     
    function 
limpiar_imagen($info){
            
$limpio explode("<table",$info);
            
$imagen explode(">",$limpio[0]);
            
$imagen $imagen[1]."/>";
            echo 
$imagen;
    }
     
    
?>

Si pongo el codigo asi me aparece el error de
CitarWarning: file_get_contents(http://www.meteoval.com/Prevision/lasolana1.php): failed to open stream: Permission denied in /home/www/atodaradio.es/index.php on line 3
, lo que me veo obligado a hacer es añadir una arroba (@) delante de file_get_contents($url); y es cuando desaparece el error. Como ya me comento blackdrake no podia mezclar librerias y he mirado por ahi manuales, pero la gran mayoria, por no decir todos son de textos o titulos. ninguno esta basado en imagenes. Si sabeis de algun manual sobre extracction de imagenes decirmelo






Pregunta del millon... donde cargo las imagenes, actualmente estan en la carpeta raiz con el mismo nombre que de la pagina original... Tambien estan en una carpeta llamada Gif/

pero sale asi:

/>/>/>/>/>/>/>/>

(http://atodaradio.es/pantallazo.jpg)

Dale permisos a index.php (con 755 debería bastar), el script es funcional y a mi me va perfectamente.

Saludos.
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: hchabot en Abril 26, 2016, 04:39:06 PM
Ya he cambiado permisos de 644 a 755 y nada no trae las imgs

¿No sera el codigo en vez de $imgs sera $gif y decirle donde esta la carpeta contenedora de imagenes?

¿que significado tiene la "ARROBA" delante de @file_get_contents($url); de esta manera anulo el error de
CitarWarning: file_get_contents(http://www.meteoval.com/Prevision/lasolana1.php): failed to open stream: Permission denied in /home/www/atodaradio.es/index.php on line 3
Saludos

Buenas... Sigo con los errores y este es el que me sale ahora:

Citar
Warning: file_get_contents(http://www.meteoval.com/Prevision/lasolana1.php): failed to open stream: Permission denied in /home/www/atodaradio.es/index.php on line 3

Notice: Undefined offset: 1 in /home/www/atodaradio.es/index.php on line 12

Notice: Undefined offset: 1 in /home/www/atodaradio.es/index.php on line 18
/>
Notice: Undefined offset: 2 in /home/www/atodaradio.es/index.php on line 12

Notice: Undefined offset: 1 in /home/www/atodaradio.es/index.php on line 18
/>
Notice: Undefined offset: 3 in /home/www/atodaradio.es/index.php on line 12

Notice: Undefined offset: 1 in /home/www/atodaradio.es/index.php on line 18
/>
Notice: Undefined offset: 4 in /home/www/atodaradio.es/index.php on line 12

Notice: Undefined offset: 1 in /home/www/atodaradio.es/index.php on line 18
/>
Notice: Undefined offset: 5 in /home/www/atodaradio.es/index.php on line 12

Notice: Undefined offset: 1 in /home/www/atodaradio.es/index.php on line 18
/>
Notice: Undefined offset: 6 in /home/www/atodaradio.es/index.php on line 12

Notice: Undefined offset: 1 in /home/www/atodaradio.es/index.php on line 18
/>
Notice: Undefined offset: 7 in /home/www/atodaradio.es/index.php on line 12

Notice: Undefined offset: 1 in /home/www/atodaradio.es/index.php on line 18
/>
Notice: Undefined offset: 8 in /home/www/atodaradio.es/index.php on line 12

Notice: Undefined offset: 1 in /home/www/atodaradio.es/index.php on line 18
/>

Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: blackdrake en Abril 29, 2016, 04:57:36 AM
Citar¿No sera el codigo en vez de $imgs sera $gif y decirle donde esta la carpeta contenedora de imagenes?

WTF? Creo que no sabes ni lo básico de PHP y eso es lo que pasa, $imgs es el nombre de la variable, puedes llamarle como quieras, que el resultado será el mismo. Es posible que el PHP de tu servidor no esté bien configurado (cosa que dudo), en cuanto a la versión, no utilicé ninguna función fuera de lo común, pues no debería ser por eso.

A mi me funciona perfectamente, te recomiendo que revises tu código, pues el error es tuyo:

Código (php) [Seleccionar]
<?php
$url 
'http://www.meteoval.com/Prevision/lasolana1.php';
$html file_get_contents($url);

$imgs explode("<td width='65' height='50'"$html);

/*echo "<pre>";
print_r($imgs);
echo "</pre>";*/

for ($i=1;$i<=8;$i++){
limpiar_imagen($imgs[$i]);
}

function 
limpiar_imagen($info){
$limpio explode("<table",$info);
$imagen explode(">",$limpio[0]);
$imagen $imagen[1]."/>";
echo $imagen;
}

?>


Resultado:
(http://i.imgur.com/eZ41ymc.png)

Un saludo.
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: hchabot en Abril 29, 2016, 05:31:24 PM
Saludos lo que se ve es que el PHP.ini esta mal configurado... podrias enviarme por mensaje privado el php.ini para reconfigurarlo, parametro por parametro?




yaaaa por fin trabaja....era el bloqueo  de conexiones de salida lo que hacia que no trabajase... bien ahora a trabajar sobre la imagen.




perdona sobre esta poarte del codigo cual es la imagen solucion, para que salga
Citar<img src="Gif/L6311100.gif" width="65" height="50">
, ya que estamos traayendo 8 imagenes de golpe y mi intencion es que traiga segun las horas del dia. osea no quiero que salga todas como en esta img (http://i.imgur.com/eZ41ymc.png)




buenas, he tratado de hacer el copiado en php sobre un manual que he encontrado en internet, este es el codigo y tiene errores:

Citar<?php

    $url = 'http://www.meteoval.com/Prevision/lasolana1.php';
    $html = file_get_contents($url);
     
    $imgs = explode("<td width='65' height='50'", $html);
     
    /*echo "<pre>";
    print_r($imgs);
    echo "</pre>";*/
     
    for ($i=1;$i<=8;$i++){
            limpiar_imagen($imgs[$i]);
    }
     
    function limpiar_imagen($info){
            $limpio = explode("<table",$info);
            $imagen = explode(">",$limpio[0]);
            $imagen = $imagen[1]."/>";
            echo $imagen;
   
}

// PARTE CODIGO DE ESAMBLAR

   // Creo dos imagenes, una es el fondo y la otra el texto que le voy a superponer
   $imagen1 = imagecreatefromgif( "http://www.atodaradio.es/fondo1.gif" ); //La imagen elegida es obligada ya que no se transportar las 8
   $imagen2 = imagecreatefromgif( "http://www.atodaradio.es/Gif/L6311100.gif" );

   // Copiamo la imágen de fondo a la imagen final
   imagecopy( $imagen1, $imagen2, 0, 0, 0, 0, 65, 50 );

   // Damos salida a la imagen final
   imagepng( $imagen1 );

   // Destruimos las imágenes
   imagedestroy( $imagen1 );
   imagedestroy( $imagen2 );
   
?>    

el problema es que salen nuemros y letras raros... ¿Donde me equivoco?
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: blackdrake en Abril 30, 2016, 02:02:16 PM
Vuelves a mezclar código inútil, no voy a ayudarte hasta que no te molestes en leer cada función y entiendas lo que hace, porque básicamente pierdo el tiempo.


Código (php) [Seleccionar]

  // Creo dos imagenes, una es el fondo y la otra el texto que le voy a superponer
   $imagen1 = imagecreatefromgif( "http://www.atodaradio.es/fondo1.gif" ); //La imagen elegida es obligada ya que no se transportar las 8
   $imagen2 = imagecreatefromgif( "http://www.atodaradio.es/Gif/L6311100.gif" );


Me puedes explicar para que haces eso? Para que coges el 2º gif? si ni siquiera sabes cual necesitas...

En mi código tienes todas las imágenes necesarias en el array pudiendo imprimir la que necesitas a cada momento, si te hubieses preocupado de entender un poco el código lo habrías descubierto.

Un saludo.
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: hchabot en Abril 30, 2016, 03:13:29 PM
Buenas si entiendo tu código, pero hasta ahora me trae las imágenes a mi página.  Según el cogido le has dicho que sobre la url traiga las imágenes de la tabla con marca o nombre td,

El uso de ese código es para ponerlas sobre la imagen fondo1.jpg basándome en coordenadas y sin ningún link a nada...

En el script hay una pequeña premisa es que según pasen las horas del día elija solo un icono, no los 8.

La parte que no entiendo del código es realmente donde el script saca la variable  gif/L12466.gif...

Como te dije al principio ando muy perdido con php y la verdad no hay muchos manuales, tan solo trato de buscar manuales destinados aquellas cosas que necesito... por ejemplo lo de superponer dos imágenes en una sola, de ahí esa parte del código.  La he hecho con una imagen aposta, por que pregunte anteriormente donde esta la respuesta de ese script, que es la que hay que sustituir por la url de la imagen para que estos iconos se superponen sobre un mapa cartografico.

Reconozco que soy un negado y por ello pregunto, y lógicamente no quiero que me lo hagan, más bien quiero hacerlo yo pero joroba me gustaría que me explicase que es cada comando.

De todas formas te repito muchas gracias por contestarme y dedicarme un tiempo maravilloso...
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: blackdrake en Mayo 01, 2016, 05:25:11 AM
Hola de nuevo, voy a pasarte de nuevo el código comentado quizás así te sea más fácil entenderlo:

Código (php) [Seleccionar]
<?php
//Recogemos la información que necesitamos

$url 'http://www.meteoval.com/Prevision/lasolana1.php';
$html file_get_contents($url);
 
$imgs explode("<td width='65' height='50'"$html);

//Mostramos el array que hemos recogido (solo para debug)
/*echo "<pre>";
print_r($imgs);
echo "</pre>";*/
 
//Puesto a que hay 8 imagenes (con texto), lo pasamos por la función "limpiar_imagen" para que muestre solo la imagen.
for ($i=1;$i<=8;$i++){
        
limpiar_imagen($imgs[$i]);
}


//Funcion limpiar_imagen

function limpiar_imagen($info){
        
$limpio explode("<table",$info); //Quitamos <table de nuestra imagen
        
$imagen explode(">",$limpio[0]); //Eliminamos > de nuestra imagen
        
$imagen $imagen[1]."/>"//Obtenemos nuestra imagen que está en la posición 1 del array y la cerramos (concatenamos />)
        
echo $imagen//Mostramos la imagen
}
 
?>


La línea que imprime la imagen es:

Código (php) [Seleccionar]
$imagen = $imagen[1]."/>"; //Obtenemos nuestra imagen que está en la posición 1 del array y la cerramos (concatenamos />)

Obviamente, si solo quieres que muestre una, lo que deberás hacer será editar el bucle for, ya que ahora lo recorre entero (valor de $i hasta 8), y quizás prefieras tu pasarle el valor de la imagen (0,1,2,3...), así hasta 8, dependiendo de la hora que sea.

Recuerdo, que la primera imagen es la número 0.

Te recomiendo también que visites nuestra biblioteca, donde hay muchos manuales de PHP y demás cosas que te podrán interesar:

Biblioteca: https://biblioteca.underc0de.org/
PHP: https://biblioteca.underc0de.org/?dir=PROGRAMACION%2FPHP%2F

Un saludo.
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: hchabot en Mayo 05, 2016, 04:07:08 PM
Saludos:

Mas o menos voy entendiendo las librerias de php, pero me surje una duda... PONGO EL CODIGO:

<?php
    
//Recogemos la información que necesitamos
     
    
$url 'http://www.meteoval.com/Prevision/lasolana1.php';
    
$html file_get_contents($url);
     
    
$imgs explode("<td width='65' height='50'"$html);
     
    
//Mostramos el array que hemos recogido (solo para debug)
    /*echo "<pre>";
    print_r($imgs);
    echo "</pre>";*/
     
    //Puesto a que hay 8 imagenes (con texto), lo pasamos por la función "limpiar_imagen" para que muestre solo la imagen.
    
for ($i=0;$i<=8;$i++){
            
limpiar_imagen($imgs[$i]);
    }
     
     
    
//Funcion limpiar_imagen
     
    
function limpiar_imagen($info){
            
$limpio explode("<table",$info); //Quitamos <table de nuestra imagen
            
$imagen explode(">",$limpio[0]); //Eliminamos > de nuestra imagen
            
$imagen $imagen[1]."/>"//Obtenemos nuestra imagen que está en la posición 1 del array y la cerramos (concatenamos />)
            
echo $imagen//Mostramos la imagen
    
}

$abajo imagecreatefromjpeg("http://www.atodaradio.es/fondo1.jpg"); //MAPA DE FONDO
$arriba imagecreatefromgif($imagen); //IMAGENES EXTRAIDAS

// Obtengo los tamaños de las imagenes
$fondoAncho imagesx($abajo);
$fondoAlto imagesy($abajo);
$arribaAncho imagesx($arriba);
$arribaAlto imagesy($arriba);

// Copiamo la imágen de fondo a la imagen final 
// Acá está la corrección antes tenia $fondoAncho y $fondoAlto
imagecopy$abajo$arriba00006550 ); // Y COORDENADAS

// Damos salida a la imagen final
imagejpeg($abajo$arriba); // IMAGEN FINAL

// Destruimos las imágenes
imagedestroy($abajo);
imagedestroy($arriba); 
 
    
?>



Hasta la linea de puntos es la extracion de la imagenes, pero ahora viene lo bueno, la segunda parte del codigo se trata de montar las dos imagenes, la de fondo y la que extraemos. la duda y el error es que no puede crear una imagen sobre un archivo que no existe y por ello da el error:
CitarWarning: imagecreatefromgif(): Filename cannot be empty in /home/www/atodaradio.es/index.php on line 35
, logicamente los errores posteriores son por el error causado de la linea 35.

no quiero que me regañes
Citarblackdrake
por basarme en un codigo de ejemplo, pero logicamente no puedo crear un codigo sin tener ni idea de programacion... estoy en el capitulo 1 de las librerias jejejejeje.

El error lo entiendo que no puede crear una imagen para insertarla debido a que no esta creada, por lo tanto no la puede superponer... HAY ALGO QUE SE PASA POR ALTO.

¿independientemente del error no tendria que salir la imagen del fondo? Esta:http://www.atodaradio.es/fondo1.jpg

Muchas gracias a todos por la ayuda de antemano
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: blackdrake en Mayo 08, 2016, 07:26:40 AM
Hola de nuevo, lamento la tardanza, sigo sin comprender porque quieres unir las dos imágenes en una vía PHP si puedes mostrar las dos imágenes (por separado) y moverlas a la posición que desees a través de CSS.

Te he modificado la función para que te sea más sencillo obtener las imágenes:

Ahora, las tienes todas en el array $pack desde las posiciones 1 a la 8 que será accesible en todo el documento (antes se mostraban con echo, por eso no podías "operar" con ellas):

Código (php) [Seleccionar]

<html>
<head>
<style>
body {
background-image: url("http://img.fondosypantallas.com/wp-content/uploads/2009/11/vladstudio_worldinversed_1280x1024.jpg");
background-repeat: no-repeat;
}
</style>
</head>
<body>
<?php
//Recogemos la información que necesitamos
 
$url 'http://www.meteoval.com/Prevision/lasolana1.php';
$html file_get_contents($url);
 
$imgs explode("<td width='65' height='50'"$html);
 
//Mostramos el array que hemos recogido (solo para debug)
/*echo "<pre>";
print_r($imgs);
echo "</pre>";*/
 
//Puesto a que hay 8 imagenes (con texto), lo pasamos por la función "limpiar_imagen" para que muestre solo la imagen.
for ($i=0;$i<=8;$i++){
   $pack[$i]=limpiar_imagen($imgs[$i]);
}

 //Funcion limpiar_imagen
 
function limpiar_imagen($info){
$limpio explode("<table",$info); //Quitamos <table de nuestra imagen
$imagen explode(">",$limpio[0]); //Eliminamos > de nuestra imagen
$imagen $imagen[1]."/>"//Obtenemos nuestra imagen que está en la posición 1 del array y la cerramos (concatenamos />)
return $imagen;
}
                
//Imágenes comprendidas desde pack1 a pack8
echo $pack[1];
echo $pack[2];
echo $pack[3];
echo $pack[4];
    
?>

</body>
</html>


De este modo, obtendrás algo como esto:

(http://i.imgur.com/ESIUhhh.png)

Obviamente puedes modificar la imagen de fondo (en este caso se lo puse al body, pero puedes hacerlo sólo para un div), de este modo y con el atributo position en css podrás mover las imágenes hasta el punto deseado.

Espero que así te resulte más entendible el código.

Un saludo.
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: hchabot en Mayo 08, 2016, 01:00:25 PM
Saludos:

me aclaro mejor y las imagenes las hago por capas. ahora viene lo bueno....jejejejeje

<html>
            <head><title>PREVISION CASTILLA LA MANCHA</title>
                   
                            <style type="text/css">
#capa1{ position:absolute;
z-index:1;
top:400px;
left:600px;
width:750px;
height:600px;
}
#capa2{
position:absolute;
}
#capa3{ position:absolute;
z-index:1;
top:300px;
left:500px;
width:750px;
height:600px;
}

</style>
                   
            </head>
            <body>
// PREVISION MANZANARES
<div id="capa3"> <?php
                            
//Recogemos la información que necesitamos
                             
                            
$url[2] = 'http://www.meteoval.com/Prevision/manzanares1.php';
                            
$html[2] = file_get_contents($url[2]);
                             
                            
$imgs[2] = explode("<td width='65' height='50'"$html[2]);
                             
                            
//Mostramos el array que hemos recogido (solo para debug)
                            /*echo "<pre>";
                            print_r($imgs[2]);
                            echo "</pre>";*/
                             
                            //Puesto a que hay 8 imagenes (con texto), lo pasamos por la función "limpiar_imagen" para que muestre solo la imagen.
                            
for ($i=0;$i<=8;$i++){
                                       
$pack[$i]=limpiar_imagen($imgs[$i]);
                            }
                           
                             
//Funcion limpiar_imagen
                             
                            
function limpiar_imagen($info){
                                            
$limpio explode("<table",$info); //Quitamos <table de nuestra imagen
                                            
$imagen explode(">",$limpio[0]); //Eliminamos > de nuestra imagen
                                            
$imagen $imagen[1]."/>"//Obtenemos nuestra imagen que está en la posición 1 del array y la cerramos (concatenamos />)
                                            
return $imagen;
                            }
                    
//Imágenes comprendidas desde pack1 a pack8
                    //echo $pack[1];
                    //echo $pack[2];
                    
echo $pack[3];
                    
//echo $pack[4];
        
?>
</div>
//PREVISION LA SOLANA
<div id="capa1"> <?php
                            
//Recogemos la información que necesitamos
                             
                            
$url 'http://www.meteoval.com/Prevision/lasolana1.php';
                            
$html file_get_contents($url);
                             
                            
$imgs explode("<td width='65' height='50'"$html);
                             
                            
//Mostramos el array que hemos recogido (solo para debug)
                            /*echo "<pre>";
                            print_r($imgs);
                            echo "</pre>";*/
                             
                            //Puesto a que hay 8 imagenes (con texto), lo pasamos por la función "limpiar_imagen" para que muestre solo la imagen.
                            
for ($i=0;$i<=8;$i++){
                                       
$pack[$i]=limpiar_imagen($imgs[$i]);
                            }
                           
                             
//Funcion limpiar_imagen
                             
                            
function limpiar_imagen($info){
                                            
$limpio explode("<table",$info); //Quitamos <table de nuestra imagen
                                            
$imagen explode(">",$limpio[0]); //Eliminamos > de nuestra imagen
                                            
$imagen $imagen[1]."/>"//Obtenemos nuestra imagen que está en la posición 1 del array y la cerramos (concatenamos />)
                                            
return $imagen;
                            }
                    
//Imágenes comprendidas desde pack1 a pack8
                    //echo $pack[1];
                    //echo $pack[2];
                    
echo $pack[3];
                    
//echo $pack[4];
        
?>
</div>
<div id="capa2"> <img src="http://atodaradio.es/fondo1.jpeg" /> </div>

            </body>
    </html>


como veras en el codigo he añadido capas osea DIV y a cada una es una imagen. La div capa2(Al final es la imagen de fondo), la capa div 1 es la prevision de la solana, y la div capa 3 es la de manzanares, pero me da un error que se que los datos entre la capa 1 y capa 3 se entrecruzan y dan error.
Si solo pongo la capa 2 y la 3 osea fondo y La solana sale bien y ademas lo he logrado poner en el sitio.

mi idea es llegar a hacer este mapa http://www.tiempo.com/ciudad-real-provincia.htm (http://www.tiempo.com/ciudad-real-provincia.htm), pero con los datos de otra web.

Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: blackdrake en Mayo 08, 2016, 01:29:02 PM
Ni siquiera te molestas en leer los errores, pues era muy obvio el fallo y si lo hubiese leído lo podrías haber solventado tu solo:

Código (php) [Seleccionar]

<html>
            <head><title>PREVISION CASTILLA LA MANCHA</title>
                   
                            <style type="text/css">
#capa1{ position:absolute;
z-index:1;
top:400px;
left:600px;
width:750px;
height:600px;
}
#capa2{
position:absolute;
}
#capa3{ position:absolute;
z-index:1;
top:300px;
left:500px;
width:750px;
height:600px;
}

</style>
                   
            </head>
            <body>
<div id="capa3"> <?php
                            
//Recogemos la información que necesitamos
                             
                            
$url[2] = 'http://www.meteoval.com/Prevision/manzanares1.php';
                            
$html[2] = file_get_contents($url[2]);
                             
                            
$imgs explode("<td width='65' height='50'"$html[2]);
                             
                            
//Mostramos el array que hemos recogido (solo para debug)
                            /*echo "<pre>";
                            print_r($imgs[2]);
                            echo "</pre>";*/
                             
                            //Puesto a que hay 8 imagenes (con texto), lo pasamos por la función "limpiar_imagen" para que muestre solo la imagen.
                            
for ($i=0;$i<=8;$i++){
                                       
$pack[$i]=limpiar_imagen($imgs[$i]);
                            }
                           
                             
//Funcion limpiar_imagen
                             
                            
function limpiar_imagen($info){
                                            
$limpio explode("<table",$info); //Quitamos <table de nuestra imagen
                                            
$imagen explode(">",$limpio[0]); //Eliminamos > de nuestra imagen
                                            
$imagen $imagen[1]."/>"//Obtenemos nuestra imagen que está en la posición 1 del array y la cerramos (concatenamos />)
                                            
return $imagen;
                            }
                    
//Imágenes comprendidas desde pack1 a pack8
                    //echo $pack[1];
                    //echo $pack[2];
                    
echo $pack[3];
                    
//echo $pack[4];
        
?>
</div>
<div id="capa1"> <?php
                            
//Recogemos la información que necesitamos
                             
                            
$url 'http://www.meteoval.com/Prevision/lasolana1.php';
                            
$html file_get_contents($url);
                             
                            
$imgs explode("<td width='65' height='50'"$html);
                             
                            
//Mostramos el array que hemos recogido (solo para debug)
                            /*echo "<pre>";
                            print_r($imgs);
                            echo "</pre>";*/
                             
                            //Puesto a que hay 8 imagenes (con texto), lo pasamos por la función "limpiar_imagen" para que muestre solo la imagen.
                            
for ($i=0;$i<=8;$i++){
                                       
$pack[$i]=limpiar_imagens($imgs[$i]);
                            }
                           
                             
//Funcion limpiar_imagen
                             
                            
function limpiar_imagens($info){
                                            
$limpio explode("<table",$info); //Quitamos <table de nuestra imagen
                                            
$imagen explode(">",$limpio[0]); //Eliminamos > de nuestra imagen
                                            
$imagen $imagen[1]."/>"//Obtenemos nuestra imagen que está en la posición 1 del array y la cerramos (concatenamos />)
                                            
return $imagen;
                            }
                    
//Imágenes comprendidas desde pack1 a pack8
                    //echo $pack[1];
                    //echo $pack[2];
                    
echo $pack[3];
                    
//echo $pack[4];
        
?>
</div>
<div id="capa2"> <img src="http://atodaradio.es/fondo1.jpeg" /> </div>

            </body>
    </html>


Aquí tienes tu código funcionando, damos el tema como solucionado?

Saludos.
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: hchabot en Mayo 08, 2016, 02:51:49 PM
Saludos de nuevo... ya he visto el error jejejeje... soy tonto  :'( :'( :'( :'(

bien mas o menos va cojiendo color la cosa y la verdad he avanzado mucho, gracias a ti.

?se puede cambiar la imagen resultante de la otra web que es .gif a que muestre unas de mi carpeta en .png?

el resultado sale asi http://atodaradio.es/index.php (http://atodaradio.es/index.php)
Título: Re:Ayuda: cómo hacer este Scraping
Publicado por: blackdrake en Mayo 08, 2016, 05:39:07 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Saludos de nuevo... ya he visto el error jejejeje... soy tonto  :'( :'( :'( :'(

bien mas o menos va cojiendo color la cosa y la verdad he avanzado mucho, gracias a ti.

?se puede cambiar la imagen resultante de la otra web que es .gif a que muestre unas de mi carpeta en .png?

el resultado sale asi http://atodaradio.es/index.php (http://atodaradio.es/index.php)

Si, se puede cambiar, la forma más sencilla sería hacer lo siguiente:

Código (php) [Seleccionar]

$bodytag = str_replace("gif", "png", $variable);


Saludos.