Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/10/2011, 13:05
Avatar de DeeR
DeeR
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 21 años
Puntos: 17
Respuesta: Extraer datos

Cita:
Iniciado por peya02 Ver Mensaje
Bien, puede que ya este explicado pero no lo e encontrado. El tema es que quisiera saber si se puede obtener datos de una web mediante php.

Os pongo un ejemplo ya que es muy parecido de lo que yo quiero conseguir:

tengo esta pagina:
http://www.nomaskeine.com/estadistic...ores/jugadores

bien pues de cada jugador quiero conseguir en texto plano, o como sea, los puntos que tiene cada jugador, seria una cosa del tipo: Messi 50 y así con toda la lista.

Muchas gracias.
Tal como te sugiere Arkaitz (en el enlace del post), hay muchos métodos para extraer datos de otro sitio desde PHP, es posible a través de las funciones nativas de PHP o utilizar la librería CURL (especial cuando debemos almacenar la cookie, hacer POST, etc.).

Como lo que requieres es sencillo, es posible solo con un GET y una expresión regular para obtener los datos que quieres (si deseas evitar las expresiones regulares, puedes usar la librería DOM para acceder a los elementos HTML).

Código PHP:
<?php
//example by deerme.org xD
$players = array();
$content file_get_contents("http://www.nomaskeine.com/estadisticas/puntos/25/mejores/jugadores");
if (  
preg_match_all('|<tr class="odd"><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td> </tr>|'$content $matchs  )  )
{
        foreach( 
$matchs[0] as $k => $v )
        {
                
$players[] = array(
                        
"name" => trim(strip_tags($matchs[2][$k])),
                        
"points" => trim($matchs[4][$k]),
                        
"position" => trim($matchs[1][$k]),
                        
"team" => trim(strip_tags($matchs[3][$k]))
                );
        }

}
print_r($players);
Y la salida es
Código:
Array
(
    [0] => Array
        (
            [name] => Cesc Fàbregas
            [points] => 62
            [position] => Centrocampista
            [team] => Barcelona
        )

    [1] => Array
        (
            [name] => Messi
            [points] => 60
            [position] => Delantero
            [team] => Barcelona
        )

    [2] => Array
        (
            [name] => Soldado
            [points] => 47
            [position] => Delantero
            [team] => Valencia
        )

    [3] => Array
        (
            [name] => Roberto Jiménez
            [points] => 44
            [position] => Portero
            [team] => Zaragoza
        )
...
Saludos