Foros del Web » Programando para Internet » PHP »

Imposible parsear/ una tabla de una web??

Estas en el tema de Imposible parsear/ una tabla de una web?? en el foro de PHP en Foros del Web. Buenos días, Me encuentro ante un expendiente X, he parseado muchas webs y nunca me he encontrado con que una zona de la pagina web ...
  #1 (permalink)  
Antiguo 12/01/2011, 03:18
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Imposible parsear/ una tabla de una web??

Buenos días,

Me encuentro ante un expendiente X, he parseado muchas webs y nunca me he encontrado con que una zona de la pagina web no pueda ser parseada!

Ya no se que más mirar, acceder a la web y recoger el código fuente funciona, si parseo otras partes de la web, como por ejemplo la etiqueta <title> funciona

Sin embargo, cuando quiero capturar la tabla RESULTADOS no hay manera.

Incluso lo he intentado de forma mas genérica y no captura nada

Código PHP:
Ver original
  1. $url='http://www.soccerstand.com/soccer/results/country/8/Spain';
  2. $web = file_get_contents($url);
  3. //echo $web;
  4.  
  5. preg_match_all('|<table.*?>(.*?)</table>|is',$web, $matches);
  6. echo "<pre>";print_r($matches);echo "</pre>";

Es muy raro no?

¿Sabéis porque no captura ninguna tabla? no lo entiendo

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 12/01/2011, 05:11
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Imposible parsear/ una tabla de una web??

Parece ser un problema de límites. Probá así:
Código PHP:
<?php
ini_set
('pcre.backtrack_limit'10000000);
$url='http://www.soccerstand.com/soccer/results/country/8/Spain';
$web file_get_contents($url);

preg_match_all('/\<table(.*?)\>(.*?)\<\/table\>/is',$web$matches); 
echo 
"<pre>";print_r($matches);echo "</pre>";

?>
  #3 (permalink)  
Antiguo 12/01/2011, 06:26
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Imposible parsear/ una tabla de una web??

Que tal neodani, no dispones de DOM ?, podria ser algo así:

Código PHP:
Ver original
  1. $url  = 'http://www.soccerstand.com/soccer/results/country/8/Spain';
  2. $html = file_get_contents($url);
  3. $dom  = new DOMDocument();
  4. $dom->loadHTML($html);
  5. foreach($dom->getElementsByTagName('table') as $table){
  6.   //do something
  7. }

Saludos.
  #4 (permalink)  
Antiguo 12/01/2011, 06:49
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Imposible parsear/ una tabla de una web??

Cita:
Iniciado por Panino5001 Ver Mensaje
Parece ser un problema de límites. Probá así:
Código PHP:
<?php
ini_set
('pcre.backtrack_limit'10000000);
$url='http://www.soccerstand.com/soccer/results/country/8/Spain';
$web file_get_contents($url);

preg_match_all('/\<table(.*?)\>(.*?)\<\/table\>/is',$web$matches); 
echo 
"<pre>";print_r($matches);echo "</pre>";

?>
Qué grande, ese era el problema el limite de esa variable, que por cierto no veo en mi php.ini

Muchas gracias a todos
  #5 (permalink)  
Antiguo 12/01/2011, 06:53
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Imposible parsear/ una tabla de una web??

Por cierto,

Hay que escapar todo?

Código PHP:
Ver original
  1. preg_match_all('/\<table(.*?)\>(.*?)\<\/table\>/is',$web, $matches);

solo escapando la contrabarra / también funciona :S

Código PHP:
Ver original
  1. preg_match_all('|<table(.*?)>(.*?)<\/table>|is',$web, $matches);

Etiquetas: imposible, parse, tablas
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 07:52.