Foros del Web » Programando para Internet » PHP »

Obtener html de una web

Estas en el tema de Obtener html de una web en el foro de PHP en Foros del Web. Hola, Estoy programando un buscador. Para ello necesito, de las páginas que se indexen en mi buscador, obtener lo que sería el código html de ...
  #1 (permalink)  
Antiguo 21/07/2004, 13:32
Avatar de mariog  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 195
Antigüedad: 15 años, 1 mes
Puntos: 0
Obtener html de una web

Hola,

Estoy programando un buscador. Para ello necesito, de las páginas que se indexen en mi buscador, obtener lo que sería el código html de la página principal. He estado mirando en el foro los temas relacionados con spiders e indexadores, pero me parecen demasiado complicados para lo que yo quiero montar.

Mi idea es, a partir de una lista de páginas, obtener de cada una de ellas un fichero .txt (por ejemplo), con su codigo html, para yo posteriormente poder analizar ese código y sacar las conclusiones que me interesen de cada una de las páginas.

He probado a usar el fopen(), pero no me deja acceder a páginas que estén fuera de mi servidor, es decir, que no sean las mias, y ando un poco perdido.

A ver si me podéis echar una manita o por lo menos orientarme.

Un saludo y gracias
  #2 (permalink)  
Antiguo 21/07/2004, 13:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si un fopen() remoto no puedes usarlor por tener limitado los "wrapers" que puedes abrir .. tendrás que hacer una conexión por sockets a la página implementando parte del protocolo HTTP para hacer la conexión -> petición de tal página y obtener su resultado.

puedes ver ejemplos en:

fsockopen()
www.php.net/fsockopen

Un saludo,
  #3 (permalink)  
Antiguo 21/07/2004, 13:53
Avatar de mariog  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 195
Antigüedad: 15 años, 1 mes
Puntos: 0
Hola,

usaria esto para establecer la conexion

resource fsockopen ( string destino, int puerto [, int errno [, string errstr [, float tiempo_espera]]])


siendo destino la página web a laque quiero acceder no??

Y luego con un simple bucle y con fgets() podría leer todas las líneas del codigo html e ir almacenandolo??

melio un poco :)
  #4 (permalink)  
Antiguo 21/07/2004, 14:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si, .. mas o menos es lo que comentas. Ejemplo tienes ahí mismo en ese link.

EL caso es que tienes que conocer algo el protocolo HTTP .. pues esos "GET host ... y demás" que ves ahí que "escribes" en el socket abierto (al puerto 80), Estas simulando con PHP un "cliente" (navegador) común hace al conectarse ..y vía fgets() lees N número de bytes.

Lo que "escribas" o "recibas" en por ese socket abierto ya no es competencia de PHP sino del protocolo que uses.

Un saludo,
  #5 (permalink)  
Antiguo 21/07/2004, 15:17
 
Fecha de Ingreso: julio-2004
Ubicación: Puerto Vallarta, Jalisco, Mexico
Mensajes: 186
Antigüedad: 13 años, 5 meses
Puntos: 0
si no me equivoco en lo que quieres hacer,
podria sacar todo el contenido de dicha pagina con file_get_contents()

Código PHP:
$pagina'http://www.sitio.com/pagina.html';
$contenido file_get_contents($weather); 
posteriormente solo escribir el $contenido en un archivo de txt.

yo lo he probado y me funciona de maravilla

espero te funcione a ti.
__________________
Shanti Castillo G.

Última edición por Shantic; 21/07/2004 a las 15:19
  #6 (permalink)  
Antiguo 21/07/2004, 15:31
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 16 años, 4 meses
Puntos: 9
perdon, pero es:
Código PHP:
 $pagina'http://www.sitio.com/pagina.html';
 
$contenido file_get_contents($pagina); 
no?
  #7 (permalink)  
Antiguo 21/07/2004, 15:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Shantic ... El problema es que para que funcione ese tipo de acceso; PHP ha de estar configurado según:

allow_url_fopen = ON

Así viene por defecto PHP .. pero por seguridad se suele desactivar. Como veras .. todo tiene su explicación (o casi todo) y .. la mayoría de veces que "a tí" te funcione o "al otro no" es por eso mismo .. PHP, para bien o para mal .. es altamente configurable .. así que hay que conocer su configuración .. para saber por qué suceden las cosas. (hablo en general ... no te lo tomes como algo personal).

http://www.php.net/manual/en/features.remote-files.php
(por cierto .... ahí tienen una función bastante completa e interesante para hacer conexiones por sockets a una página y enviar/recibir datos o lo que genere como salida)

Un saludo,
  #8 (permalink)  
Antiguo 21/07/2004, 23:49
 
Fecha de Ingreso: julio-2004
Ubicación: Puerto Vallarta, Jalisco, Mexico
Mensajes: 186
Antigüedad: 13 años, 5 meses
Puntos: 0
Cita:
Iniciado por Cluster
Shantic ... El problema es que para que funcione ese tipo de acceso; PHP ha de estar configurado según:

allow_url_fopen = ON

Así viene por defecto PHP .. pero por seguridad se suele desactivar. Como veras .. todo tiene su explicación (o casi todo) y .. la mayoría de veces que "a tí" te funcione o "al otro no" es por eso mismo .. PHP, para bien o para mal .. es altamente configurable .. así que hay que conocer su configuración .. para saber por qué suceden las cosas. (hablo en general ... no te lo tomes como algo personal).

http://www.php.net/manual/en/features.remote-files.php
(por cierto .... ahí tienen una función bastante completa e interesante para hacer conexiones por sockets a una página y enviar/recibir datos o lo que genere como salida)

Un saludo,
como ya te lo habia dicho antes, cada dia se aprende algo nuevo, pero en caso de que pueda usar ese codigo, es bueno tambien saber que se puede hacer asi no ?

no me lo tomo personal Cluster no te preocupes por eso, y si entiendo eso que dices que PHP es altamente configurable, y te agradezco que aclares las cosas, por que tienes razon a veces a alguien le funciona y a otros no, y por lo regular es por el INI :)

Suerte
__________________
Shanti Castillo G.
  #9 (permalink)  
Antiguo 22/07/2004, 11:21
Avatar de mariog  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 195
Antigüedad: 15 años, 1 mes
Puntos: 0
Bueno, he estado probando ambas cosas. Lo que dice Shantic no me reconoce la funcion, debe ser que tengo mal configurado el PHP no??, eso nunca se me dio bien.

En el tema de los sockets, me realiza la conexion, pero es lo que dice Cluster, hay que conocer el protocolo que uso y no entiendo nada de lo que me aparece. Sabríais decirme donde encontrar información para seguir adelante con esto. Es bastante importante.

Un saludo y gracias
  #10 (permalink)  
Antiguo 22/07/2004, 11:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En mi último mensaje dejé este comentario:

Cita:
http://www.php.net/manual/en/features.remote-files.php
(por cierto .... ahí tienen una función bastante completa e interesante para hacer conexiones por sockets a una página y enviar/recibir datos o lo que genere como salida)
Ahí tienes un ejemplo ..

Si no quieres "reinventar la rueda" .. también puedes buscarte alguna classe/función para gestionar el protocolo HTTP. Por ejemplo .. de las que puedes ver en:

http://www.phpclasses.org/browse/class/6.html

Un saludo,

PD: El protocolo HTTP lo define la RFC's: (y afines)
http://www.rfc.net/rfc2616.html
  #11 (permalink)  
Antiguo 22/07/2004, 12:03
Avatar de mariog  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 195
Antigüedad: 15 años, 1 mes
Puntos: 0
soy la leche.... eso me pasa por no leer con calma. Muchas gracias
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 15:17.