Foros del Web » Programando para Internet » PHP »

Obtener datos desde web externa con php pero no funcionan los links

Estas en el tema de Obtener datos desde web externa con php pero no funcionan los links en el foro de PHP en Foros del Web. Hola a todos los del foro. Bueno tengo una consulta, resulta que yo queria sacar información de una web... mas especificamente desde: http://earthquake.usgs.gov/earthquak...merica_eqs.php ya que ...
  #1 (permalink)  
Antiguo 26/03/2012, 21:32
Avatar de backend  
Fecha de Ingreso: mayo-2004
Ubicación: chile
Mensajes: 135
Antigüedad: 19 años, 11 meses
Puntos: 0
Obtener datos desde web externa con php pero no funcionan los links

Hola a todos los del foro.
Bueno tengo una consulta, resulta que yo queria sacar información de una web... mas especificamente desde:

http://earthquake.usgs.gov/earthquak...merica_eqs.php

ya que al agregarla en un IFRAME me redirecciona mi pagina a la pagina ya mencionada arriba.

Lo que hice fue sacar la lista completa de la información que yo queria con este codigo
Código PHP:
<?php
$options 
= array('http' => array(
'method'  => 'GET',
));

$configstream_context_create($options);
$config_final=file_get_contents('http://earthquake.usgs.gov/earthquakes/recenteqsww/Maps/region/S_America_eqs.php',false$config);
preg_match_all("|<a name=\"listtop\">(.*)</table>|sU"$config_final$tiempo);
echo 
$tiempo[1][0];
?>
Bien, esto me funciona excelente pero al hacer click en los links que tambien fueron obtenidos dentro del contenido la url no me sale completa. (Si no se puede solucionar, si es que se puede obtener pero eliminar los links)
Ej:
direccion del link que debería aparecer:
http://earthquake.usgs.gov/eqcenter/...us2012yqa1.php

link que queda despues de obtener los datos es:

http://miweb.com/eqcenter/recenteqsw...us2012yqa1.php

lógicamente la idea es que aparezca la primera URL en el enlace.



obviamente el link en la web original esta escrito sin la url del sitio y por eso se agrega la de mi pagina pero se puede hacer algo con eso, solucionar de alguna forma ???


Como dije mas arriba, si no se puede solucionar eso, se puede obtener toda la info pero sin los links???


Saludos !!!
  #2 (permalink)  
Antiguo 27/03/2012, 05:52
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Obtener datos desde web externa con php pero no funcionan los links

has probado con preg_replace(), expresiones regulares y la extración ($n)??
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 27/03/2012, 11:06
Avatar de backend  
Fecha de Ingreso: mayo-2004
Ubicación: chile
Mensajes: 135
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: Obtener datos desde web externa con php pero no funcionan los links

probe con este que pense que me podia servir pero no :(
Código PHP:
$direccion 'eqcenter';
 
echo 
preg_replace('/eqcenter/''http://earthquake.usgs.gov/eqcenter/'$direccion); 
pense que serviria algo asi.

Alguien me podria ayudar como puedo modificar el codigo original que puse en el primer post para hacerlo funcionar asi porfavor

Última edición por backend; 27/03/2012 a las 13:11
  #4 (permalink)  
Antiguo 27/03/2012, 14:12
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Obtener datos desde web externa con php pero no funcionan los links

ha sido un intento bastante pobre. ahora pensándolo mejor no es necesario la extracción
Cita:
echo preg_replace('/(miweb\.com\/)/i', '', '<a href="http://miweb.com/earthquake.usgs.gov/earthquakes/recenteqsww/Quakes/us2012yqa1.php">nueva url</a>');
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 27/03/2012, 16:00
Avatar de backend  
Fecha de Ingreso: mayo-2004
Ubicación: chile
Mensajes: 135
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: Obtener datos desde web externa con php pero no funcionan los links

Gracias Isabel pero no es eso el codigo que necesito...
  #6 (permalink)  
Antiguo 27/03/2012, 17:34
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Obtener datos desde web externa con php pero no funcionan los links

fue meramente un ejemplo didáctico
Cita:
preg_replace(patrón, reemplazo, cadena)
prueba ahora
Cita:
echo preg_replace('/(miweb\.com\/eqcenter)/', 'earthquake.usgs.gov/earthquakes', $tiempo[1][0])
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 28/03/2012, 11:34
Avatar de backend  
Fecha de Ingreso: mayo-2004
Ubicación: chile
Mensajes: 135
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: Obtener datos desde web externa con php pero no funcionan los links

Código PHP:
echo preg_replace('/(MIWEB\.com\/eqcenter)/''earthquake.usgs.gov/earthquakes'$tiempo[1][0]) 
Lo utilizé asi y no funca, sigue igual el asunto.

Código PHP:
<?php
$options 
= array('http' => array(
'method'  => 'GET',
));

$configstream_context_create($options);
$config_final=file_get_contents('http://earthquake.usgs.gov/earthquakes/recenteqsww/Maps/region/S_America_eqs.php',false$config);
preg_match_all("|<a name=\"listtop\">(.*)</table>|sU"$config_final$tiempo);
echo 
preg_replace('/(miweb\.com\/eqcenter)/''earthquake.usgs.gov/earthquakes'$tiempo[1][0])

?>
  #8 (permalink)  
Antiguo 28/03/2012, 12:17
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Obtener datos desde web externa con php pero no funcionan los links

echo str_replace("/eqcenter/","http://earthquake.usgs.gov/eqcenter/",$tiempo[1][0]);



el error es sencillo estas metiendo que reemplace a miweb.com cuando todavia en la parte donde lo estas haciendo no existe
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #9 (permalink)  
Antiguo 28/03/2012, 12:25
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Obtener datos desde web externa con php pero no funcionan los links

De todas formas no deberías usar expresiones regulares para esto, para eso existen clases como las DOM de PHP:

Código PHP:
Ver original
  1. <?php
  2. $doc = new DOMDocument();
  3. $doc->loadHTMLFile('http://earthquake.usgs.gov/earthquakes/recenteqsww/Maps/region/S_America_eqs.php');
  4. $data = $doc->getElementsByTagName('table');
  5. $tr = $doc->getElementsByTagName('tr');
  6.  
  7. foreach ($tr as $r) {
  8.     $a = $r->getElementsByTagName('a')->item(1);
  9.     $link = $a->attributes->getNamedItem('href')->value;
  10.     $nombre_link = $a->nodeValue;
  11.     echo "<a href=\"http://earthquake.usgs.gov$link\" />$nombre_link</a><br />" . PHP_EOL;
  12. }
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #10 (permalink)  
Antiguo 28/03/2012, 14:07
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Obtener datos desde web externa con php pero no funcionan los links

Cita:
Iniciado por andresdzphp Ver Mensaje
De todas formas no deberías usar expresiones regulares para esto, para eso existen clases como las DOM de PHP
que interesante!! pensaba que sólo era posible en javascript
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #11 (permalink)  
Antiguo 28/03/2012, 22:24
Avatar de backend  
Fecha de Ingreso: mayo-2004
Ubicación: chile
Mensajes: 135
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: Obtener datos desde web externa con php pero no funcionan los links

Cita:
Iniciado por johhan16 Ver Mensaje
echo str_replace("/eqcenter/","http://earthquake.usgs.gov/eqcenter/",$tiempo[1][0]);



el error es sencillo estas metiendo que reemplace a miweb.com cuando todavia en la parte donde lo estas haciendo no existe
Gracias johhan16, usé el codigo que me diste y me funcionó perfecto.. ya pude hacer andar el codigo como quería... eran solo pequeños detalles a lo que me habia entregado "IsaBelM"...


El codigo que me dio andresdzphp me entrego un error en foreach...

Código PHP:
<?php
$doc 
= new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTMLFile('http://earthquake.usgs.gov/earthquakes/recenteqsww/Maps/region/S_America_eqs.php');
$data $doc->getElementsByTagName('table');
$tr $doc->getElementsByTagName('tr');
*
foreach (
$tr as $r) {
* * 
$a $r->getElementsByTagName('a')->item(1);
* * 
$link $a->attributes->getNamedItem('href')->value;
* * 
$nombre_link $a->nodeValue;
* * echo 
"<a href=\"http://earthquake.usgs.gov$link\" />$nombre_link</a><br />" PHP_EOL;
}
voy a tratar de hacerlo funcionar igual para tenerlo como otra opción tambien ya que seria bueno dejar la solucion para los que lleguen a este tema por el buscador.

Gracias de todas maneras andresdzphp, IsaBelM y johhan16 gracias por la paciencia jaja saludos!! suerte!.

Etiquetas: externa, funcionan, links
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 08:52.