Foros del Web » Programación para mayores de 30 ;) » Java »

Acceder a los datos de una página web

Estas en el tema de Acceder a los datos de una página web en el foro de Java en Foros del Web. Hola a tod@s!! Veréis, lo que quiero es hacer una aplicación que monitorice una página web. En este caso es una de esas tan famosas ...
  #1 (permalink)  
Antiguo 13/12/2008, 04:51
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 16 años
Puntos: 0
Acceder a los datos de una página web

Hola a tod@s!!

Veréis, lo que quiero es hacer una aplicación que monitorice una página web. En este caso es una de esas tan famosas redes sociales. Lo que quiero es que mi aplicación consulte cada cierto tiempo los datos de la página para ver si me han llegado mensajes nuevos... El problema que tengo es que no sé muy bien como hacer que mi aplicación extraiga esta información de dicha página.
Se me ha ocurrido usar sockets y bueno, leer el código fuente de la página y a partir de ese HTML, pues sacar la información de cuantos mensajes tengo y demás... Lo malo es que observando el código fuente de la página... no he encontrado ningún punto en el que se diga implicitamente "tienes X mensajes nuevos"... Si no que más bien esos valores están "ocultos" y no sé como obtenerlos... Sospecho que esto tiene que ver con javascript... :pensanado:

No se si alguien me podrá ayudar... podría poner el código fuente de la página si ayuda....

P.D: También probé a recoger el código fuente antes de que me enviaran un mensaje y luego después de que me enviaran un mensaje, para compararlos y la diferencia es nula...


Gracias
  #2 (permalink)  
Antiguo 13/12/2008, 09:36
Avatar de TresPuntoDos  
Fecha de Ingreso: septiembre-2008
Ubicación: Madrid, España
Mensajes: 242
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: Acceder a los datos de una página web

Si nos dices que pagina es te podremos echar una mano
__________________
Tres punto Dos - Mi Blog sobre J2EE, Java, Struts y Diseño Web
Proyecto BloJ - Crea tu blog Java
  #3 (permalink)  
Antiguo 13/12/2008, 14:23
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 16 años
Puntos: 0
Respuesta: Acceder a los datos de una página web

La página es http://www.tuenti.com
  #4 (permalink)  
Antiguo 14/12/2008, 12:23
Avatar de TresPuntoDos  
Fecha de Ingreso: septiembre-2008
Ubicación: Madrid, España
Mensajes: 242
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: Acceder a los datos de una página web

Hay un div llamado notifications en donde te pone todo, tus mensajes nuevos, tus comentarios nuevos, etc..

Quizas puedas sacarlo leyendolo desde ahi
__________________
Tres punto Dos - Mi Blog sobre J2EE, Java, Struts y Diseño Web
Proyecto BloJ - Crea tu blog Java
  #5 (permalink)  
Antiguo 14/12/2008, 12:45
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 16 años
Puntos: 0
Respuesta: Acceder a los datos de una página web

¿¿Te refieres a esto??

Código:
<div id="notifications" class="float-right" style="width:145px;"></
perdona por mi ignorancia es que no sé mucho de HTML... y ¿cómo puedo leer esos valores?

Gracias
  #6 (permalink)  
Antiguo 14/12/2008, 16:19
 
Fecha de Ingreso: noviembre-2008
Ubicación: San Vicente (Alicante)
Mensajes: 21
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Acceder a los datos de una página web

si tienes instalado el complemento Firebug de Mozilla Firefox, ahí te sale bastante información...y si ya lo tienes instalado entonces te recomendaría que buscaras información sobre el DOM API. Espero que te sirva. ^_^
  #7 (permalink)  
Antiguo 14/12/2008, 18:33
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 16 años
Puntos: 0
Respuesta: Acceder a los datos de una página web

¡¡Guau!! ¡¡Muy interesante las cosas que comentais!!

Me he instalado la extensión esa que comentabas trumpetero, he estado investigando y es genial la opción esa que hay de inspeccionar elementos, se puede ver casi con total claridad que elemento está relacionado con que parte del código HTML.

Investigando he llegado a las siguientes conclusiones... Me apoyo en imágenes para mi explicación.

(NOTA: por no llevar cierta antiguedad en el foro y no alcanzar un cierto mínimo número de mensajes no puedo poner las imágenes como es debido... si las queréis ver, podéis copiar el enlace y pegarlo en el navegador... gracias y perdón por las molestias)


http://img205.imageshack.us/my.php?image=20081215010916wl4.jpg


En esta imagen se puede ver mi perfil. La imagen que tengo puesta como principal y entre otras cosas cabe resaltar las áreas que he bordeado con unos rectángulos de colores. El área roja es donde me aparecen las notificaciones de que he recibido nuevos mensajes, algo así como:

Tienes 2 mensajes nuevos
Tienes 1 mensaje privado
Tienes 2 invitaciones a eventos


El área verde corresponde con un elemento "div" que comentábais antes.
La correspondencia entre la imagen y el código HTML es la siguiente (ver la siquiente imagen).

http://img179.imageshack.us/my.php?image=20081215010803bw3.jpg

Como se observa en la imagen del código, tal y como yo pensaba y tal y como me confirmaba TresPuntoDos, hay un elemento "div" que pone "notifications" . En el área marcada de color rojo, que es donde recibo las alertas o avisos.

Pero mi gran problema ahora es: ¿Cómo puedo obtener la información de ese elemento? Si esa información no está directamente incluida en el código HTML (como por ejemplo el número de visitas que tengo a mi perfil, que se ve claramente y es fácil obtenerla), ¿cómo puedo acceder a esa información entonces? Es posible que la página muestre esa información a través de cierto código o funciones javascript... ¿no? ¿Cómo saber el número de mensajes normales, privados y/o eventos?

P.D: He buscado también información sobre API DOM que me comentabas trumpetero, pero no le veo ninguna utilidad de momento... Seguiré investigando, espero que me podáis ayudar en algo más... Muchas gracias a todos.
  #8 (permalink)  
Antiguo 15/12/2008, 04:16
Avatar de TresPuntoDos  
Fecha de Ingreso: septiembre-2008
Ubicación: Madrid, España
Mensajes: 242
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: Acceder a los datos de una página web

Si obtienes el codigo HTML de la pagina desde Java solo tendrias que recorrerlo y buscar ese div comprobando que tiene dentro y ver si pone que tienes mensajes o no
__________________
Tres punto Dos - Mi Blog sobre J2EE, Java, Struts y Diseño Web
Proyecto BloJ - Crea tu blog Java
  #9 (permalink)  
Antiguo 15/12/2008, 07:19
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 16 años
Puntos: 0
Respuesta: Acceder a los datos de una página web

Hola,

A ver... si el obtener el código sé como hacerlo... y recorrerlo hasta el "notifications"... pues me las apañaría para hacerlo... pero mi gran problema es : ¿cómo obtengo esos valores de notifications o de donde corresponda? Eso es lo que necesito saber... porque no es tan fácil como recorrer el código HTML y ya está... pues tengo que obtener esos valores de algún sitio (supongo que es del "notifications")... (y si es que se puede... que espero que sí...)

Saludos y gracias por el interés.
  #10 (permalink)  
Antiguo 15/12/2008, 07:32
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 16 años
Puntos: 0
Respuesta: Acceder a los datos de una página web

Una cosa que creo que no ha quedado clara :

Al principio del tema, comentaba que analicé el código HMTL de la página antes y después de recibir unos mensajes... se supone que después de recibir los mensajes debería de aparecer en el código fuente "Tienes X mensajes nuevos" pero no sale... es decir cuando analicé el código antes y después de que me enviaran los mensajes la diferencia fue nula (¡¡No había diferencia!!).

Por eso digo que no es tan sencillo como recorrer el código HTML y comprobar si ha habido algún cambio... porque no los hay... entonces los mensajes normales, mensajes privados y eventos, deben de recogerse de otro sitio que desconozco...

Creo que TresPuntoDos no me habías entendido esto que quería decir...

A ver si me podéis echar una mano... porque me estoy volviendo loco no sé como continuar con mi aplicación...


Muchas gracias, un saludo a todos.
  #11 (permalink)  
Antiguo 16/12/2008, 03:15
Avatar de TresPuntoDos  
Fecha de Ingreso: septiembre-2008
Ubicación: Madrid, España
Mensajes: 242
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: Acceder a los datos de una página web

Los cambios los tienes y los puedes chequear porque los ves, el problema es que seguro que sera una recarga ajax por eso al pinchar en ver codigo fuente no ves los cambios

Comprueba si cuando tienes mensajes, no cuando los recibes, el codigo fuente muestra eso
__________________
Tres punto Dos - Mi Blog sobre J2EE, Java, Struts y Diseño Web
Proyecto BloJ - Crea tu blog Java
  #12 (permalink)  
Antiguo 16/12/2008, 10:09
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 16 años
Puntos: 0
Respuesta: Acceder a los datos de una página web

Si, comprobé el código fuente antes y después de tener un mensaje normal, un mensaje privado y un evento. Lo comprobé con UltraCompare en el UltraEdit y no me mostraba ninguna diferencia entre los códigos... ¿es imposible entonces comprobar la llegada de mensajes si no hay cambios en el código fuente?
  #13 (permalink)  
Antiguo 16/12/2008, 10:36
 
Fecha de Ingreso: septiembre-2003
Mensajes: 122
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Acceder a los datos de una página web

¿Los datos de la pagina los tenes soportados en una bdd?

¿Porque no te armas una aplicacion para consultar esos datos?
  #14 (permalink)  
Antiguo 16/12/2008, 11:32
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 16 años
Puntos: 0
Respuesta: Acceder a los datos de una página web

Cita:
Iniciado por pablitino Ver Mensaje
Si, comprobé el código fuente antes y después de tener un mensaje normal, un mensaje privado y un evento. Lo comprobé con UltraCompare en el UltraEdit y no me mostraba ninguna diferencia entre los códigos... ¿es imposible entonces comprobar la llegada de mensajes si no hay cambios en el código fuente?

Los datos no los tengo en una BBDD, están en la página web. He intentado ver si se podían obtener a partir del código fuente de la página, pero no se puede obtener de éste al parecer... Lo que estoy haciendo es una aplicación para consultarlos... pero si no sé de donde o cómo consultarlos... pues no puedo hacerlo...
  #15 (permalink)  
Antiguo 16/12/2008, 12:54
Avatar de TresPuntoDos  
Fecha de Ingreso: septiembre-2008
Ubicación: Madrid, España
Mensajes: 242
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: Acceder a los datos de una página web

Lo siento pero he estado mirando el codigo fuente y va a ser dificil conseguir hacer lo que quieres, le seguire echando un vistazo porque podria ser una buena aplicacion

Si consigo algo te lo digo
__________________
Tres punto Dos - Mi Blog sobre J2EE, Java, Struts y Diseño Web
Proyecto BloJ - Crea tu blog Java
  #16 (permalink)  
Antiguo 16/12/2008, 13:43
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 16 años
Puntos: 0
Respuesta: Acceder a los datos de una página web

Ok, ¡¡muchas gracias!!

Yo también he estado investigando. Aunque si no se saca del código de la página... lo veo difícil... Por cierto en mis investigaciones encontré unas librerías para Java muy buenas:


HtmlUnit - > http://htmlunit.sourceforge.net/

Se puede utilizar para conseguir el código de la página web, hacer click en botones o en links, vamos como si estuvuieramos navegando en la propia página. Aunque en mi caso no creo que de momento vaya hacer mucho uso de ellas, pero se ve bastante interesante para aquellos que quieran usar java y páginas web. También se podría usar para programar acciones de manera automática en una web... Ahí lo dejo por si a alguien le interesa. Saludos!!
  #17 (permalink)  
Antiguo 17/12/2008, 02:30
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Respuesta: Acceder a los datos de una página web

Yo he usado esa libreria para hacer tests funcionales de aplicaciones web, y para hacer pequeños script que me comprueben periodicamente si las aplicaciones web funcionan, y va bastante bien.

En cuanto al caso concreto, si el problema es que no se escribe en el HTML de una peticion sino que la información que viene forma parte de una peticion AJAX, lo que yo intentaria sería investigar que formato tiene la llamada AJAX que obtiene esa informacion e intentar replicarla usando HTMLUnit. Puede que haya que hacer varios pasos para tener que copnseguir alguna cookie de estado, o algun identificador, pero practicamente todo lo que se puede hacer desde el navegador, se puede imitar desde el HTMLUnit o similares, con mas o menos trabajo.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #18 (permalink)  
Antiguo 17/12/2008, 02:32
Avatar de TresPuntoDos  
Fecha de Ingreso: septiembre-2008
Ubicación: Madrid, España
Mensajes: 242
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: Acceder a los datos de una página web

Yo lo que he visto es que las llamadas las hace mediante JavaScript asi que habria que intentar ver que llamadas hace y si se puede reproducirlas con esa libreria
__________________
Tres punto Dos - Mi Blog sobre J2EE, Java, Struts y Diseño Web
Proyecto BloJ - Crea tu blog Java
  #19 (permalink)  
Antiguo 17/12/2008, 02:35
 
Fecha de Ingreso: diciembre-2008
Mensajes: 100
Antigüedad: 16 años
Puntos: 0
Respuesta: Acceder a los datos de una página web

Uff... creo que voy a tener que estudiar más....
De AJAX estoy al 0% y de JavaScript todavía se algo... ¿Cómo sabes tan seguro que son llamadas de JavaScript? ¿Entonces es posible saber si tengo mensajes o no?

Saludos.
  #20 (permalink)  
Antiguo 17/12/2008, 03:06
Avatar de TresPuntoDos  
Fecha de Ingreso: septiembre-2008
Ubicación: Madrid, España
Mensajes: 242
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: Acceder a los datos de una página web

Por que en el codigo fuente he visto que lo unico que hay es una funcion de Javascript

Esa pagina esta hecha usando AJAX para practicamente todo, lo malo es que los archivos javascript estan ofuscados y va a ser dificil saber como hacer el proceso Java
__________________
Tres punto Dos - Mi Blog sobre J2EE, Java, Struts y Diseño Web
Proyecto BloJ - Crea tu blog Java
  #21 (permalink)  
Antiguo 17/12/2008, 03:50
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Respuesta: Acceder a los datos de una página web

Para ver la llamada que es, sin necesidad de comprender el JavaScript de la pagina, puedes usar el Firebug y mirar la pestaña del trafico de red en la parte de Consola. Las llamadas AJAX que haga tu pagina deberian salir ahi.
S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #22 (permalink)  
Antiguo 17/12/2008, 09:10
Avatar de TresPuntoDos  
Fecha de Ingreso: septiembre-2008
Ubicación: Madrid, España
Mensajes: 242
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: Acceder a los datos de una página web

Por desgracia en esta pagina no salen porque eso ya se me habia ocurrido a mi
__________________
Tres punto Dos - Mi Blog sobre J2EE, Java, Struts y Diseño Web
Proyecto BloJ - Crea tu blog Java
  #23 (permalink)  
Antiguo 17/12/2008, 10:20
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Respuesta: Acceder a los datos de una página web

¿Quiza use Flash entonces? Por que teoricamente todas las llamadas desde JavaScript deberian salir en el Firebug. Puestos a las malas... se puede echar mano del WireShark, pero eso ya son palabras mayores .

Yo no uso esa página, asi que no lo puedo mirar.
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #24 (permalink)  
Antiguo 17/12/2008, 11:57
 
Fecha de Ingreso: noviembre-2008
Ubicación: San Vicente (Alicante)
Mensajes: 21
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Acceder a los datos de una página web

ya que te ha sido útil mi consejo sobre el firebug, podrías aumentarme el karma ^_^

un saludo y suerte!!!
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 02:37.