elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Leer datos de otra página
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Leer datos de otra página  (Leído 5,057 veces)
icisneros
GNU/Linux
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.296



Ver Perfil WWW
Leer datos de otra página
« en: 7 Abril 2008, 22:02 pm »

Estoy programando una especie de robot en php que rastree determinadas páginas web y en caso de que encuentre el contenido que yo estoy buscando me envie un e-mail.

Para leer las otras páginas y analizar el código utilizo la funcion:
Código:
$html = implode('', file($enlace));

Esto funciona correctamente, el problema es que cuando analizo la web y contiene algún enlace que me interesa y ejecuto por segunda vez la función implode:
Código:
$html_enlace = implode('',file($enlace_articulo));

Muchas veces me falla, y actualizo la página y funciona, el problema es que este robot podrá seguir hasta 15 enlaces rastreando noticias.

El fallo que da es:

Citar
Warning: file(http://www.xxa.es/ela) [function.file]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in /var/www/xxxa/lee.php on line 149

Warning: implode() [function.implode]: Bad arguments. in /var/www/xxxa/leeddn.php on line 149

Y la linea 149 es

Código:
$html_enlace = implode('',file($enlace_articulo));

Y esta linea realmente está bien programada porque hay veces que funciona, pero por alguna cosa el servidor falla al hacer la petición http algunas veces.

He pensado que como meto todo el codigo html dentro de las variables, igual superaba la memoria de php, pero he probado a crear funciones para liberar las variables despues de leer la página y me sigue fallando.

¿alguna idea?

Un saludo!!


En línea

eLank0
eLhAcKeR r00Lz


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: Leer datos de otra página
« Respuesta #1 en: 8 Abril 2008, 00:15 am »

Hola,

En PHP existe la función file_get_contents(), devuelve una cadena, con el contenido del archivo especificado.
Código:
string file_get_contents  ( string $nombre_archivo  [, int $banderas  [, resource $contexto  [, int $desplazamiento  [, int $long_max  ]]]] )

Más info: http://www.php.net/file_get_contents

Salu2


En línea

дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Leer datos de otra página
« Respuesta #2 en: 8 Abril 2008, 03:59 am »

Hazlo con cURL.
En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Leer datos de otra página
« Respuesta #3 en: 8 Abril 2008, 12:16 pm »

hace poco agrupé unos cuantos métodos para acceder a contenido remoto desde php xD

te dejo link
http://blog-indomita.blogspot.com/2008/03/6-metodos-para-abrir-direcciones-web.html
En línea

icisneros
GNU/Linux
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.296



Ver Perfil WWW
Re: Leer datos de otra página
« Respuesta #4 en: 8 Abril 2008, 17:39 pm »

Gracias por vuestra ayuda, al final pasando parte de los procesos a funciones se ha solucionado el problema, seguramente estaría sobrepasando la memoria de php del servidor, así que al pasarlo a funciones como al terminar libera las variables no falla nunca  ;D

Ahora tengo otro problema que me está rompiendo la cabeza:

Código:
echo $linea;

$html_articulo = implode('', file($linea));

echo $html_articulo;

$linea contiene una linea que leo de un documento de texto con una dirección de una página, entonces se supone que en $html_articulo debería cargar el código html de la dirección de la página, pero no funciona.

En cambio si antes de esto, añado la dirección que me devuelve echo $linea; en la variable $linea si que funciona; pero claro no me sirve porque esto va dentro de un bucle y cada vez debe leer una url diferente.

He pensado que igual al leer en linea la linea del documento de texto con
Código:
$linea = fgets($fichero_configuracion, 500);
tal vez $linea en lugar de ser una string normal, es otro tipo o algo raro y por eso no lo coge.

Alguna idea?

Un saludo!
En línea

icisneros
GNU/Linux
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.296



Ver Perfil WWW
Re: Leer datos de otra página
« Respuesta #5 en: 8 Abril 2008, 22:53 pm »

SOLUCIONADO:

Había un carácter en blanco al final de la url en $linea, así que la depuré así:

$linea_depurada = trim($linea);

y ya todo ok, gracias a todos!

Un saludo!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Enviar datos de una página a otra
PHP
KeyPy HH 1 2,657 Último mensaje 24 Octubre 2012, 16:43 pm
por [u]nsigned
Recoger datos de otra web
PHP
SCM 2 2,052 Último mensaje 12 Febrero 2013, 22:53 pm
por SCM
Como leer pagina web
Programación C/C++
Away 2 1,558 Último mensaje 29 Marzo 2017, 15:34 pm
por Away
Datos Página Web
Desarrollo Web
twomz 2 2,307 Último mensaje 16 Junio 2021, 22:33 pm
por Xyzed
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines