Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Duda novato: leer contenido web externa

Estas en el tema de Duda novato: leer contenido web externa en el foro de Frameworks JS en Foros del Web. Hola a todos, estoy empezando con AJAX poco a poco y voy aprendiendo cosas simples, envío de fomrularios y cosas así. Me apetece aprender a ...
  #1 (permalink)  
Antiguo 17/12/2010, 10:28
 
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 20 años, 7 meses
Puntos: 0
Duda novato: leer contenido web externa

Hola a todos,

estoy empezando con AJAX poco a poco y voy aprendiendo cosas simples, envío de fomrularios y cosas así.

Me apetece aprender a hacer algo que creo que es posible con AJAX.

Me gustaría que me deis indicaciones (donde buscar, qué buscar exactamente, cómo se llamo lo quiero hacer...) para aprender a leer datos de una web externa a mi sitio web y poder usarlos en mi página.

Por ejemplo, tengo una web A y una web B externa. En la web ha tengo un indicador en rojo que cuando la web B actualiza algún dato se pone en verde. O si la web B publica un nuevo artículo, leo el título y lo muestro en A (es solo un ejemplo, podría hacerlo con RSS).

¿Se haría "generando" un XML de la web B? ¿Leyendo su código HTML? ¿Podría usar jQuery para acceder a esos elementos de la web externa para leer contenido de etiquetas en mi web?

Gracias y perdonad si es un tema muy explicado. He buscado algo pero no consigo dar con un sitio donde explique tranquilamente como hacer todo esto.

¡Un saludo!
  #2 (permalink)  
Antiguo 17/12/2010, 15:49
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Duda novato: leer contenido web externa

si programas en asp, has de usar el objeto XMLHTTP. he buscado su equivalencia en php y es file_get_contents()
  #3 (permalink)  
Antiguo 18/12/2010, 14:51
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Duda novato: leer contenido web externa

Cita:
Iniciado por coke_135 Ver Mensaje
Hola a todos,

estoy empezando con AJAX poco a poco y voy aprendiendo cosas simples, envío de fomrularios y cosas así.

Me apetece aprender a hacer algo que creo que es posible con AJAX.

Me gustaría que me deis indicaciones (donde buscar, qué buscar exactamente, cómo se llamo lo quiero hacer...) para aprender a leer datos de una web externa a mi sitio web y poder usarlos en mi página.

Por ejemplo, tengo una web A y una web B externa. En la web ha tengo un indicador en rojo que cuando la web B actualiza algún dato se pone en verde. O si la web B publica un nuevo artículo, leo el título y lo muestro en A (es solo un ejemplo, podría hacerlo con RSS).

¿Se haría "generando" un XML de la web B? ¿Leyendo su código HTML? ¿Podría usar jQuery para acceder a esos elementos de la web externa para leer contenido de etiquetas en mi web?

Gracias y perdonad si es un tema muy explicado. He buscado algo pero no consigo dar con un sitio donde explique tranquilamente como hacer todo esto.

¡Un saludo!
Ajax no es la "grasa de culebra" (regionalismo peruano) que todo lo cura. Sirve para dar más interactividad a una web. En este caso no hace falta Ajax, solamente PHP. Bien, como hacer?

En primer lugar no se puede hacer que cuando se actualice la web que sirve como fuente automáticamente se coja esa última actualización y se guarde en la base de datos propia. Por qué? porque no es tu web para que pongas un código que te indica cuando se ha actualizado. Lo que se puede hacer es revisar esa web periódicamente y comprobar si el contenido es nuevo o no.

Cómo hacerlo? en primer lugar requiere conocimiento de PHP, dentro de PHP saber CURL para obtener el contenido, puedes buscar "emular navegador con CURL" y va a aparecer una función en este mismo foro. OK, una vez obtenido debes procesarlo, en este caso obtener estructuradamente la información. O sea, el título, las categorías si hay, y el contenido en si. Eso se hace con el API DOM de PHP. Luego pues lo guardas en tu base de datos. Para cada web fuente se requiere un distinto código que obtenga los datos estructuradamente.

Por último se debe hacer que eso se repita periódicamente, talvez algún desesperado querrá que este proceso se repita automáticamente cada hora, yo recomendaría que sea cada día. Para eso simplemente se programaría un cron job que ejecute el archivo PHP donde se encuentra ese código. Una cosa que se me está pasando por alto es el hecho de que cada artículo que se quiera guardar en la base de datos debe antes ser chequeado para ver si ya existe. Bueno, eso es lógico.

Bien, eso sería todo. Realmente no es tan difícil, pero es necesario saber varias cosas. Suerte!
  #4 (permalink)  
Antiguo 18/12/2010, 14:59
 
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Duda novato: leer contenido web externa

Cita:
Iniciado por ElJavista Ver Mensaje
Ajax no es la "grasa de culebra" (regionalismo peruano) que todo lo cura. Sirve para dar más interactividad a una web. En este caso no hace falta Ajax, solamente PHP. Bien, como hacer?

En primer lugar no se puede hacer que cuando se actualice la web que sirve como fuente automáticamente se coja esa última actualización y se guarde en la base de datos propia. Por qué? porque no es tu web para que pongas un código que te indica cuando se ha actualizado. Lo que se puede hacer es revisar esa web periódicamente y comprobar si el contenido es nuevo o no.

Cómo hacerlo? en primer lugar requiere conocimiento de PHP, dentro de PHP saber CURL para obtener el contenido, puedes buscar "emular navegador con CURL" y va a aparecer una función en este mismo foro. OK, una vez obtenido debes procesarlo, en este caso obtener estructuradamente la información. O sea, el título, las categorías si hay, y el contenido en si. Eso se hace con el API DOM de PHP. Luego pues lo guardas en tu base de datos. Para cada web fuente se requiere un distinto código que obtenga los datos estructuradamente.

Por último se debe hacer que eso se repita periódicamente, talvez algún desesperado querrá que este proceso se repita automáticamente cada hora, yo recomendaría que sea cada día. Para eso simplemente se programaría un cron job que ejecute el archivo PHP donde se encuentra ese código. Una cosa que se me está pasando por alto es el hecho de que cada artículo que se quiera guardar en la base de datos debe antes ser chequeado para ver si ya existe. Bueno, eso es lógico.

Bien, eso sería todo. Realmente no es tan difícil, pero es necesario saber varias cosas. Suerte!
Muchas gracias.

Empezaré por CURL a ver que tal.

¡Un saludo!
  #5 (permalink)  
Antiguo 18/12/2010, 15:24
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Duda novato: leer contenido web externa

ElJavista, no sé si tienes conocimientos de asp, la equivalencia de XMLHTTP object no es file_get_content()?? o no supe buscar??
  #6 (permalink)  
Antiguo 18/12/2010, 18:28
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Duda novato: leer contenido web externa

A ver, el objeto XMLHttpRequest sirve para obtener el contenido de un archivo web, ya sea, html, txt o PHP o lo que sea, pero este contenido se obtendrá tal y como lo obtiene un navegador. Se usa desde JavaScript. la función file_get_content que yo sepa es de PHP no de ASP. Y sirve para obtener archivos, si fuera PHP y si estuviera en el propio hosting se obtendría su código fuente, distinto que al caso de XMLHttpRequest. En verdad tienen muy poco punto de comparación. Claro que se pueden obtener con ambos el contenido de un archivo, pero se obtienen de manera muy distintas y en contextos distintos.

Lo que el usuario necesita no se puede realizar con Ajax, por qué? a ver, la página se puede obtener mediante XMLHttpRequest, luego, con JavaScript talvez se pueda obtener su contenido estructurado, o sea, separar el titulo, las categorías y el cuerpo de artículo. OK y para guardarlo en la base de datos? Bueno, se podría hacer otro llamado Ajax. Genial, doble llamado Ajax. Ok, hasta aquí ya se puede y ahora para que esto se repita periódicamente? Cronjob no lo va a hacer, así ejecutes esa página, cronjob no lo abre como un navegador, o sea, no ejecuta ningún script de cliente. Por eso no se puede. Ok, otra solución genial sería un setInterval que repita la función Ajax cada cierto tiempo, pero tendrías que tener esa página abierta todo el tiempo, y cuando digo todo, digo TODO. No nos compliquemos, con PHP y cron job, basta. Suerte!
  #7 (permalink)  
Antiguo 19/12/2010, 07:22
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Duda novato: leer contenido web externa

gracias por una respuesta tan extensa, pero no parece que con ella se responda a mi pregunta directamente. yo uso asp, y en este lenguaje tenemos el objeto XMLHTTP, no equivocarse con el objeto XMLHttpRequest. en cuanto a cron-job, por lo que he leído, es lo que en asp son tareas programadas del servidor. te pongo un caso que tengo montado, tengo una web que lo hace es recopilar información sobre eventos que se publican en otras web. pues bien, usando el objeto XMLHTTP me conecto a la web x, traigo su html y lo depuro para obtener la sección que me interesa, luego esa sección la inserto en mi bd. este proceso, como bien dijistes, no es conveniente hacerlo cada hora, yo tengo establecida esta tarea del servidor cada dos días.
la conclusión que saco al final de tu respuesta, es que el equivalente de XMLHTTP para php no es la función file_get_content()
  #8 (permalink)  
Antiguo 19/12/2010, 15:26
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Duda novato: leer contenido web externa

Cabe precisar si se trata de ASP o ASPX o mejor dicho ASP.NET, me parece que es lo segundo. Bueno, si es el caso parece que tienen cierta equivalencia, pero me parece que no del todo, porque ese XMLHTTP parece que funcion mediante el protocolo HTTP (suena obvio), no obstante la funciòn file_get_content sirve principalmente para archivos que están en el propio hosting, sin embargo con la función file_get_content también se puede obtener archivos mediante el protocolo http, pero no siempre funciona y lo màs correcto para ese caso es usar CURL. Esa sería mi respuesta. La verdad no conozco bien ASP.NET por eso confundì el objeto XMLHTTP con el objeto XMLHttpRequest.

Etiquetas: ajax, contenido, externa
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 09:31.