Foros del Web » Programando para Internet » PHP »

Sacar datos de una pagina

Estas en el tema de Sacar datos de una pagina en el foro de PHP en Foros del Web. Hola amigos, ,tengo este script y no me funciona bie, : Código PHP: $url  =  "http://pagina_para_sacar_datos.com/carpeta/archivo?parametros" ; if(!( $fp = fopen ( $url , 'r' ...
  #1 (permalink)  
Antiguo 14/09/2004, 10:45
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Sacar datos de una pagina

Hola amigos, ,tengo este script y no me funciona bie, :

Código PHP:
$url "http://pagina_para_sacar_datos.com/carpeta/archivo?parametros";
if(!(
$fp=fopen($url,'r')))
{    echo 
"No se puede habrir la pagina.";
    exit;
}
$contents fread($fp,1000000);
fclose($fp); 

y no lo abre todo, , pues quiero llegar hasta una parte de la pagina siquiera para sacar unos datos, por ejemplo quiero sacar el pronostico del tiempo o el cambio de moneda, etc. pero la cosa es que esta mas abajo el codigo y solo llega hasta cierta parte, .
Porfa amigos si alguien ya lo ha hecho, haber si podrian ayudarme, .


Saludos
Gildus
__________________
.: Gildus :.
  #2 (permalink)  
Antiguo 14/09/2004, 12:00
Avatar de Ugho  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 487
Antigüedad: 21 años, 5 meses
Puntos: 0
prueba con:
--------------------------
..
$contents = fread ($fp, filesize ($url));
..
-------------------------------------------
y quizas podrias decirno que tipo de archivo es el que tratas de leer y cuanto pesa...
quizas tengas restricciones en cuanto a la lecturra del tamaño del archivo...
Saludos...
__________________
________________________________________

Ugho.
  #3 (permalink)  
Antiguo 14/09/2004, 14:02
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Hola Ugho, , si le puse ya antes, pero no consigo nada, . mira :

Código PHP:
<?
$url 
"http://espanol.wunderground.com/global/stations/84773.html";
if(!(
$fp=fopen($url,'r')))
{    echo 
"No se puede habrir la pagina.";
    exit;
}
$contents fread($fp,filesize($url));
fclose($fp);
?>
y me muestra esto:

Código PHP:
Warningfilesize(): Stat failed for [url]http://http://pagina_para_sacar_datos.com/carpeta/archivo?parametros[/url] (errno=2 - No such file or directory) in C:\www\prueba1.php on line 7 
Guuuuaaaaaaaaaa!!!!!!, .
Que puedo hacer, como te dije antes logre que llegue hasta cierto punto pero ya no quiere llegar mas abajo, pues el dato que quiero esta mas abajo, le aumente a fread() a 100000000 y nada, que debo hacer, .

Habra algun metodo?, .

Estaba tratando hacerlo con sockets pero se complica mas por no saber el puerto que utilizan, . o habra algo mejor por alli ? , .


Bueno haber si pueden ayudarme, .


Saludos .
Gildus
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 14/09/2004, 14:17
Avatar de Ugho  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 487
Antigüedad: 21 años, 5 meses
Puntos: 0
Amigo gildus:
solo una consulta....este o estos archivos estan en un servidor remoto?
__________________
________________________________________

Ugho.
  #5 (permalink)  
Antiguo 14/09/2004, 21:58
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 20 años, 2 meses
Puntos: 0
Veo que intentas obtener la temperatura de ese sitio :)

Bueno busque en php.net y encontre que con conexiones HTTP/1.1 hay que forzar el user-agent (browser que utilizas).


Código PHP:
<?php 
$returned
=URLopen("http://espanol.wunderground.com/global/stations/84773.html"); 

function 
URLopen($url

       
// Fake the browser type 
       
ini_set('user_agent','Mozilla: (compatible; Windows XP)'); 

       
$dh fopen("$url",'r'); 
       
$result fread($dh,8192);                                                                                                                            
       return 
$result

?>
El codigo no es mio, lo saque de PHP.NET

Cualquier cosa aqui tienes mas info http://ar2.php.net/manual/es/function.fopen.php
__________________
Orlando F. Brea
SmartSol - Soluciones Inteligentes


Diseño y Desarrollo de Soluciones Web
  #6 (permalink)  
Antiguo 15/09/2004, 10:53
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Holas

Si Ugho trato de conectarme remotamente o mas vien leer remotamente una pagina y guardar su contenido en un array o variable.

Gracias orlandob, pero no me resulto, si lo abre pero sigue faltando, no llega hasta donde quiero. Me sale 53 lineas de codigo html pero solo hasta alli y yo quiero que llegue siquiera hasta 200 lineas, pero no llega.

Tambien le cambie al fread : fread($dh,8192) ----> fread($dh,1000000)
y las dos formas me salen igual.


Saludos
Gildus
__________________
.: Gildus :.
  #7 (permalink)  
Antiguo 15/09/2004, 13:27
Avatar de Ugho  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 487
Antigüedad: 21 años, 5 meses
Puntos: 0
has probado con la funcion file....???
Código PHP:

$url 
"http://espanol.wunderground.com/global/stations/84773.html"
$fichero=file($url);
$lineas=count($fichero);
echo 
"contador=$lineas"
deja cada linea del archivo en una matriz...
saludos
__________________
________________________________________

Ugho.
  #8 (permalink)  
Antiguo 15/09/2004, 17:41
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 20 años, 2 meses
Puntos: 0
Ahora lo pude probar ;)

Código PHP:

<?php
$returned
=URLopen("http://espanol.wunderground.com/global/stations/84773.html");
echo 
$returned;

function 
URLopen($url)
{
       
// Fake the browser type
       
ini_set('user_agent','Mozilla: (compatible; Windows XP)');

       
$dh fopen($url,'r');
       
$result '';
       
$sParte '';
       while (
$sParte fread($dh,8192))
               
$result $result.$sParte;
       return 
$result;
}
?>
Saludos
__________________
Orlando F. Brea
SmartSol - Soluciones Inteligentes


Diseño y Desarrollo de Soluciones Web
  #9 (permalink)  
Antiguo 15/09/2004, 18:18
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Gracias orlandob y tambien ugho.

Excelente!!!!!
me funciona los dos scripts.

Estaba investigando de esto y me vi con la sorpresa que es mas eficiente con las funcions sockets pero solo me falta saber el puerto que utiliza la pagina.
Segun lei es mas eficiente y mas eficaz. pero las funciones file tambien pero de menos rapidez.

Bueno muchachos, gracias. apenas sepa como encontrar o si es posible o no el encontrar el puerto que usa tal pagina los aviso.

Saludos
Gildus
__________________
.: Gildus :.
  #10 (permalink)  
Antiguo 15/09/2004, 21:07
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 20 años, 2 meses
Puntos: 0
El protocolo es HTTP y no he tenido que cambiar nada para conectarme, por lo que el puerto del servidor es el 80.
con sockets tendrias que conectarte a "espanol.wunderground.com" al puerto 80 y hacer una peticion HTTP del tipo
Código:
GET /global/stations/84773.html HTTP/1.1\r\n\r\n
Puedes agregarle otros datos como el host, el browser, etc. Todo eso esta en la documentacion del protocolo HTTP.
Recuerda que debes terminar con \r\n\r\n (dos saltos de linea) luego del ultimo parametro (en el codigo anterior fue el GET)

Saludos.
__________________
Orlando F. Brea
SmartSol - Soluciones Inteligentes


Diseño y Desarrollo de Soluciones Web
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 09:33.