2009-01-08 8 views
6

Necesito una pantalla para eliminar algunos datos de un sitio web, porque no está disponible a través de su servicio web. Cuando tuve que hacer esto previamente, escribí el código Java usando la biblioteca de cliente HTTP de Apache para realizar las llamadas HTTP relevantes para descargar los datos. Calculé las llamadas relevantes que necesitaba hacer haciendo clic en las pantallas relevantes en un navegador mientras usaba el Charles web proxy para registrar las llamadas HTTP correspondientes.autogenerar la pantalla HTTP raspando código Java

Como se puede imaginar, este es un proceso bastante tedioso, y estoy lamentando si hay una herramienta que realmente pueda generar el código de Java que corresponde a una sesión del navegador. Espero que el código generado no sea tan bonito como el código escrito de forma manual, pero siempre puedo ordenarlo después. ¿Alguien sabe si existe tal herramienta? El selenio es una posibilidad que conozco, aunque no estoy seguro si es compatible con este caso de uso exacto.

Gracias, Don

Respuesta

2

Usted debe echar un vistazo a HtmlUnit - que fue diseñado para probar los sitios web, pero funciona muy bien para la captura de imágenes y la navegación a través de múltiples páginas. Se encarga de las cookies y otras cosas relacionadas con la sesión.

3

El blog manageability.org tiene una entrada que enumera un montón de herramientas de raspado de páginas web para Java. Sin embargo, parece que no puedo alcanzarlo ahora, pero sí encontré una representación de solo texto en el caché de Google here.

+3

la dirección exacta es: http://www.manageability.org/blog/stuff/screen-scraping-tools-written-in-java/view?searchterm=scraping – vonjd

0

Una herramienta llamada The Grinder le permite crear una secuencia de comandos de una sesión a través de su proxy. El resultado es Python (ejecutable en Jython).

+0

Si la salida era código Java, eso sería exactamente lo que estoy buscando. Sé que puedes ejecutar Python en la JVM a través de Jython, pero necesito el código de Java. –

4

También agregaría +1 para HtmlUnit ya que su funcionalidad es muy poderosa: si necesita un comportamiento 'como si un navegador real estuviera raspando y usando la página' esa es definitivamente la mejor opción disponible. HtmlUnit ejecuta (si lo desea) el Javascript en la página.

Actualmente tiene full featured support para todas las bibliotecas Javascript principales y ejecutará el código JS usándolas. En correspondencia con eso, puede obtener identificadores de los objetos de JavaScript en la página mediante programación en su prueba.

Sin embargo, si el alcance de lo que está tratando de hacer es menor, más en la línea de leer algunos de los elementos HTML y donde no le importa Javascript, entonces usar NekoHTML debería ser suficiente. Es similar a JDom dando acceso programático en lugar de XPath al árbol. Probablemente necesites utilizar Apache's HttpClient para recuperar páginas.

2

Yo diría que personalmente me gusta usar HtmlUnit y Selenium como mis 2 herramientas favoritas para Screen Scraping.