Foros del Web » Programando para Internet » PHP »

Obener código HTML de un sitio web y mostrarlo.

Estas en el tema de Obener código HTML de un sitio web y mostrarlo. en el foro de PHP en Foros del Web. Hola, os pongo una duda. Cuando una persona accede a un web, obtiene un código HTML. Lo que necesito es que desde el servidor obtenga ...
  #1 (permalink)  
Antiguo 18/04/2011, 01:00
 
Fecha de Ingreso: abril-2007
Mensajes: 14
Antigüedad: 17 años
Puntos: 0
Pregunta Obener código HTML de un sitio web y mostrarlo.

Hola, os pongo una duda.

Cuando una persona accede a un web, obtiene un código HTML.

Lo que necesito es que desde el servidor obtenga el código HTML generado y almacenarlo en una Base de datos.

Por ejemplo pongo un botón que ponga: Obtener HTML de la URL: ___

Para luego yo consultar el texto que había en un determinado día.
Esto me sirve para comprobar si ha habido variaciones en un determinado sitio web. (Se que existen programas para ese fin, pero no me sirven porque no lo puedo personalizar)

Luego para complicar más la cosa, lo mismo para sitios que requieren identificación.

un saludo.
  #2 (permalink)  
Antiguo 18/04/2011, 05:51
 
Fecha de Ingreso: enero-2011
Ubicación: sergigp.com
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Obener código HTML de un sitio web y mostrarlo.

puedes hacerlo con curl o con get contents: Hice un breve manual hace un tiempo... espero que te sirva y disculpad por el spam ;)

http://www.sergigp.com/scrapear-con-php-1/
  #3 (permalink)  
Antiguo 18/04/2011, 06:13
 
Fecha de Ingreso: abril-2007
Mensajes: 14
Antigüedad: 17 años
Puntos: 0
Respuesta: Obener código HTML de un sitio web y mostrarlo.

La respuesta esta de lujo. Además no conocía el conceptos de Scrapear, algo nuevo que se aprende.

Gracias, iré probando, espero no tener problemas.

un saludo.

Edito: Espero que sigas trabajando en este tema se ve muy interesante.
Estaré pendiente de la segunda parte, por si algún día decide ampliar.

un saludo

Edito 2:

Corrige lo siguiente:

Las comillas la dobles de la URL van simples
Original:
Código:
$targetUrl="<a href="http://www.marca.com/participa/laquiniela/">http://www.marca.com/participa/laquiniela/</a>"; //nuestra url objetivo
//
Con comillas simples:

Código:
$targetUrl="<a href='http://www.marca.com/participa/laquiniela/'>http://www.marca.com/participa/laquiniela/</a>"; //nuestra url objetivo
//
y los "&gt;" por ">" quedando:


Código:
$dom-&gt;loadHTML($html);
Código:
$dom->loadHTML($html);
Código:
$ListPartidos = $xpath->evaluate("/html/body//td[@class='partido']");//seleccionamos los atributos que queremos guardar
//
Sigo verificando el código el código. y te comento

Última edición por DigitalUser; 18/04/2011 a las 06:36
  #4 (permalink)  
Antiguo 18/04/2011, 06:52
 
Fecha de Ingreso: enero-2011
Ubicación: sergigp.com
Mensajes: 7
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Obener código HTML de un sitio web y mostrarlo.

el blog está en construcción, los errores que comentas son por culpa del maldito plugin... me lo apunto para revisarlo. gracias :)
  #5 (permalink)  
Antiguo 18/04/2011, 07:08
 
Fecha de Ingreso: abril-2007
Mensajes: 14
Antigüedad: 17 años
Puntos: 0
Respuesta: Obener código HTML de un sitio web y mostrarlo.

Es lo normal, hay muchos plugin que suelen dar ese problema.
Yo ya no recuerdo cual cogía para que me mostrara los colores bien y el código lo respetara, hace tiempo que no toco plugin de wordpress


bueno la primera linea queda así: (que antes lo he corregido mal)

Código:
$targetUrl="http://www.marca.com/participa/laquiniela/"; //nuestra url objetivo
El resto esta bien, solo la parte de obtener una fragmento falla, porque seguramente la web ha variado el código, tendria que ver el HTML
pero he probado imprimir todo el código y va bien

me ha quedado al final:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body>


<span>
<?php

// PHP INI
// Activar php_curl (Eliminar el ; para activar)
//extension=php_curl.dll

// Fuente: http://www.sergigp.com/scrapear-con-php-1/

/*
Es posible que copiéis el script en vuestro servidor o en locahost (como WAMP o XAMP) y no os funcione, esto es debido a que por defecto muchas instalaciones de Apache y PHP traen desabilitada la extension php_curl. Para que funcione haced lo siguiente:

   1. Asegurate de que Apache y demás está desactivado.
   2. Navega hasta la ruta \bin\php\(tu version de php)\ dentro de la carpeta de XAMP o WAMP
   3. Abre con un editor de texto el archivo php.ini y descomenta la línea extension=php_curl.dll
   4. Vuelve a realizar los pasos dos o tres para la ruta \bin\Apache\(tu version de apache)\bin\
   5. Reinicia el servidor.

*/

$targetUrl="http://www.marca.com/participa/laquiniela/"; //nuestra url objetivo
 
$c = curl_init(); //inicializando manipulador curl
 
curl_setopt($c, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1");  //seleccionando el user agent
 
curl_setopt($c, CURLOPT_RETURNTRANSFER, true); //queremos que curl nos devuelva un resultado
 
curl_setopt($c, CURLOPT_TIMEOUT, 10); //timeout
 
curl_setopt($c, CURLOPT_URL,$targetUrl); // set target
 
$html= curl_exec($c); //curl ejecuta y devuelve un string con todo el codigo

echo $html ; // Mostrando toda la web:

// parse html en un DOMDocument

// La parte de abajo hay que verificar el HTML de la web.
 
$dom = new DOMDocument();
 
$dom->loadHTML($html);
 
$xpath = new DOMXPath($dom); //inicializando DOMXPath
 
$ListPartidos = $xpath->evaluate("/html/body//td[@class='partido']");//seleccionamos los atributos que queremos guardar
?>
</span>


</body>
</html>
Pues muchas gracias, este tipos de cosas hacen un blog interesante.
Te estaré siguiendo, a medida que progreses.

un saludo.

Última edición por DigitalUser; 18/04/2011 a las 07:23

Etiquetas: html
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 13:57.