Foros del Web » Programando para Internet » PHP »

Capturar cosas de una web externa

Estas en el tema de Capturar cosas de una web externa en el foro de PHP en Foros del Web. Buenas. Estoy intentando hacer lo siguiente. Tengo una web dedicada a un juego online, y me gustaría capturar de otra web un dato muy concreto, ...
  #1 (permalink)  
Antiguo 07/01/2008, 19:10
 
Fecha de Ingreso: enero-2008
Mensajes: 4
Antigüedad: 16 años, 3 meses
Puntos: 0
Capturar cosas de una web externa

Buenas.

Estoy intentando hacer lo siguiente.
Tengo una web dedicada a un juego online, y me gustaría capturar de otra web un dato muy concreto, en mi caso la posición que ocupa mi alianza en el ranking.

he estado haciendo pruebas (adjunto codigo)
<?php
$contenido=file_get_contents('http://www.astrowars-tools.com/tools/rankings.php?ranking=alliance&page=2');
$regexp = '/(?:<title>)(.+)(?:<\/title>)/';
preg_match_all($regexp,$contenido,$matches);
print_r($matches[1]);
?>

esto me da este resultado en mi web
Array ( [0] => Astrowars-Tools.com - Alliances ranking )

como puedo hacer que no salga lo de Array [0] ????


Mi idea final era usando el cron job de mi server, que cada noche capturara ese dato a un TXT y desde PHP recuperarlo

Alguien me puede hechar una mano? Busco el que me copie el dato a un TXT.

Gracias de antemano.
Un saludo.
  #2 (permalink)  
Antiguo 07/01/2008, 20:13
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Re: Capturar cosas de una web externa

Lo que quiere decir eso, es que $matches[1] es un array, que en la posición 0 tiene "Astrowars-Tools.com - Alliances ranking".

En lugar de print_r(), utiliza simplemente algo como
Código PHP:
echo $matches[1][0]; 
Lo que no entiendo es para qué capturas el dato del título de la página. Si lo que quieres es saber la posición de tu alianza vas a tener que hacer algo más.

Saludos
  #3 (permalink)  
Antiguo 08/01/2008, 01:43
 
Fecha de Ingreso: enero-2008
Mensajes: 4
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Capturar cosas de una web externa

Hombre, ese script era de pruebas

Ahora empezaré con el de verdad, a ver si consigo sacarlo jejeje


Gracias por la info.
  #4 (permalink)  
Antiguo 08/01/2008, 04:01
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Re: Capturar cosas de una web externa

El problema principal que vas a tener es que es tabla está paginada. Por ahora hay 3 páginas en donde pueda estar tu alianza. Y tendrás que buscar una por una.

El uso de expresiones regulares tiende a cargar un poco más aún. trata de utilizar funciones simples como strpos(), substr(), etc, etc. en lugar de expresiones regulares. La estructura de la web es muy sencilla y te lo permite.

Por ejemplo, algo como esto debería funcionar:
Código PHP:
<?php

$alianza_buscada 
'LD';

$num_paginas 3;
$pagina 1;
$encontrado false;

//Hay que recorrer todas las páginas
while($pagina <= $num_paginas && $encontrado == false){
    
$contenido file_get_contents('http://www.astrowars-tools.com/tools/rankings.php?ranking=alliance&page='.$pagina);
    
$contenido str_replace("\t"''$contenido);

    
$inicio_tabla strpos($contenido'</tr>') + 5
    
$fin_tabla strpos($contenido'</table>');

    
//caracteres totales 
    
$num_caracteres $fin_tabla $inicio_tabla;

    
$tabla trim(substr($contenido$inicio_tabla$num_caracteres));

    
$filas = array();
    
$filas explode('</tr>'$tabla);

    foreach( 
$filas as $fila ){
        
$fila trim(strip_tags($fila));
        
$columna explode("\n"$fila);
        if( 
$columna[1] == $alianza_buscada ){
            
$ranking $columna[0];
            
$encontrado true;
        }
    }
    
$pagina++;
}

if( 
$encontrado == true ){
    echo 
'La alianza '.$alianza_buscada.' se encuentra en el puesto '.$ranking;
}else{
    echo 
'No se encontró a la alianza '.$alianza_buscada.' en el ranking';
}

?>
Saludos

Última edición por jpinedo; 08/01/2008 a las 04:06
  #5 (permalink)  
Antiguo 08/01/2008, 08:24
 
Fecha de Ingreso: enero-2008
Mensajes: 4
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Capturar cosas de una web externa

Acabo de probar tu codigo y funciona a las mil maravillas.

Muchas gracias, me estaba volviendo loco haciendo el código
Ahora ya tengo un modelo de referencia y puedo ir sacando mas datos de mi alianza.

Gracias.
  #6 (permalink)  
Antiguo 20/02/2008, 16:02
 
Fecha de Ingreso: marzo-2004
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: Capturar cosas de una web externa

Hola tengo un problema similar con esta pagina:


http://www.netappel.fr/fr/index.html

para loguearse se usa esat direccion:

https://myaccount.netappel.fr/clx/index.php

y los datos de form son

'part' => 'plogin'
'username' => 'hfhnevb_arj'
'password' => 'N678901'

pero no logro loguarme si alguien sabe por que es el problema se lo agradeceria un monton, gracias de antemano a todos

estado tratando con lo que nomban aqui y nada
__________________
Software a Medida
voip Locutorios
  #7 (permalink)  
Antiguo 20/02/2008, 16:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Capturar cosas de una web externa

Si lo que quieres es hacer un login, debes de usar la librería cURL y usar un CookieJar para mantener la sesión activa y poder obtener los datos.

Saludos.
  #8 (permalink)  
Antiguo 20/02/2008, 16:24
 
Fecha de Ingreso: junio-2007
Ubicación: Mérida, Yucatán, México
Mensajes: 94
Antigüedad: 16 años, 10 meses
Puntos: 1
Re: Capturar cosas de una web externa

Tienes que hacer que la cookie la puedan leer otrosdirectorios dentro de tu sitio web, usa una diagonal para indicarle que la pueden leer en todo el dominio... en caso contrario lee el manual:

http://www.php.net/setcookie

setcookie("nombrecookie","miinfo",0,'/');
  #9 (permalink)  
Antiguo 20/02/2008, 17:18
 
Fecha de Ingreso: marzo-2004
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: Capturar cosas de una web externa

probe con curl pero redirecciona a otra pagina y entonces lo lee el archivo desde mi dominio y se pierde, lo que quiero hacer es loguearme y luego cuando se direcciona a
https://myaccount.netappel.fr/clx/buy_credit.php entonces quiero capturar los datos de la pagina gracias a todos por su ayuda

Cita:
<?php
// Se crea un manejador CURL
$ch = curl_init();

// Se establece la URL y algunas opciones
curl_setopt($ch, CURLOPT_URL, "http://www.ppicla.com/Tuberias_de_concreto_en_general.html");
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);

// Se obtiene la URL indicada
curl_exec($ch);

// Se cierra el recurso CURL y se liberan los recursos del sistema
curl_close($ch);
?>
__________________
Software a Medida
voip Locutorios

Última edición por migueilichenco; 20/02/2008 a las 17:26
  #10 (permalink)  
Antiguo 20/02/2008, 18:20
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Re: Capturar cosas de una web externa

migueilichenco,

Al validar el usuario no se redirecciona correctamente la página por que no encuentra la cookie.

Cita:
curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); // Cookie management.
curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE_FILE);
Tendrias que añadir esas lineas.

Saludos
  #11 (permalink)  
Antiguo 20/02/2008, 18:39
 
Fecha de Ingreso: marzo-2004
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: Capturar cosas de una web externa

Hola gracias por tu respuesta e probado eso en el ultimo codigo que mande y sigue presentandose el problema que cuando me redirecciona manda al nuevo link dentro de mi propio dominio asi que sale pagina no existe, lo pruebo asi por que el de netappel tiene el mismo tipo de redireccion, gracias a todos por sus respuestas
__________________
Software a Medida
voip Locutorios
  #12 (permalink)  
Antiguo 20/02/2008, 18:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Capturar cosas de una web externa

Busca en Google la clase Snoopy, tiene mas metodos para trabajar, y puedes entrar, hacer login y obtener otras paginas sin salirte de la original es lo que se podria decir un "cliente web" pero desde codigo.

Saludos.
  #13 (permalink)  
Antiguo 21/02/2008, 03:31
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Re: Capturar cosas de una web externa

migueilichenco,

Yo para realizar este tipo de capturas de contenido, con el fin de tratar a posteriori la información, utilizo una serie de librerias que emplean CURL. La verdad es que estan fántasticas y simplifican enormemente las operaciones a realizar con CURL si no se tiene mucha idea.

Puedes echar un vistazo tanto a ejemplos como descargar las librerias desde la siguiente dirección:

http://www.nickycakes.com/category/coding/

Gatorv,

La verdad es que no conocia esto del Snoopy, le tendremos que echar un ojo a ver que tal esta, aunque por lo que comentas, pinta bastante bien el tema :)

Saludos
  #14 (permalink)  
Antiguo 21/02/2008, 12:40
 
Fecha de Ingreso: marzo-2004
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: Capturar cosas de una web externa

Hola gracias por sus respuestas estuve probando algo de snoopy muy bueno eh pero el problema persisten miren este es un ejemplo que tengo de problema

Código PHP:
<?php
// Se crea un manejador CURL
$ch curl_init();

// Se establece la URL y algunas opciones
curl_setopt($chCURLOPT_URL"http://www.ppicla.com/Tuberias_de_concreto_en_general.html");
curl_setopt($chCURLOPT_FAILONERROR1);
curl_setopt($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_COOKIEJARCOOKIE_FILE); // Cookie management.
curl_setopt($chCURLOPT_COOKIEFILECOOKIE_FILE);
// Se obtiene la URL indicada
echo curl_exec($ch);

// Se cierra el recurso CURL y se liberan los recursos del sistema
curl_close($ch);
?>
y esta colgado aqui miren como sigue al javascrip y produce error:

http://interfase.com.pe/cx1/p3.php

y no puedo seguir la pagina solo carga el archivo inxsistente por que la pagina a donde quiero entrar tiene ese javascript

gracias a todos y aver si me pueden dar la mano gracias un abrazo
__________________
Software a Medida
voip Locutorios
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:54.