Raspado web con Java

No puedo encontrar ninguna buena API basada en Java. El sitio que necesito eliminar no proporciona ninguna API; Quiero iterar sobre todas las páginas web usando algún pageID y extraer los títulos HTML / otras cosas en sus árboles DOM.

¿Hay otras formas además del raspado web?

Gracias

jsoup

Extraer el título no es difícil, y tiene muchas opciones, busque aquí en Desbordamiento de stack para ” analizadores HTML de Java “. Uno de ellos es Jsoup .

Puede navegar la página usando DOM si conoce la estructura de la página, vea http://jsoup.org/cookbook/extracting-data/dom-navigation

Es una buena biblioteca y la he usado en mis últimos proyectos.

Su mejor opción es usar Selenium Web Driver ya que

  1. Proporciona retroalimentación visual al codificador (vea su raspado en acción, vea dónde se detiene)
  2. Exacto y consistente, ya que controla directamente el navegador que utiliza.
  3. Lento. No afecta a páginas web como HtmlUnit, pero a veces no desea golpear demasiado rápido.

    Htmlunit es rápido pero es horrible en el manejo de Javascript y AJAX.

HTMLUnit se puede utilizar para hacer raspado web, admite la invocación de páginas, llenado y envío de formularios. Lo he usado en mi proyecto. Es una buena biblioteca de Java para raspar web. lea aquí para más

mecanize para Java sería una buena opción para esto, y como Wadjy Essam mencionó usa JSoup para HMLT. mechanize es un cliente HTTP / HTML que soporta la navegación, los envíos de formularios y el raspado de páginas.

http://gistlabs.com/software/mechanize-for-java/ (y el GitHub aquí https://github.com/GistLabs/mechanize )

También hay Jaunt Java Web Scraping & JSON Querying – http://jaunt-api.com

Mire un analizador HTML como TagSoup, HTMLCleaner o NekoHTML.

Con el rascador web, puede extraer el contenido útil de la página web y convertirlo a cualquier formato según corresponda.

WebScrap ws= new WebScrap(); //set your extracted website url ws.setUrl("http://dasnicdev.github.io/webscrap4j/"); //start scrap session ws.startWebScrap(); 

Ahora su sesión de eliminación de contenido web comienza y está lista para eliminar o extraer datos en Java utilizando la biblioteca webscrap4j .

Para el título:

 System.out.println("-------------------Title-----------------------------"); System.out.println(ws.getSingleHTMLTagData("title")); 

Por lema:

 System.out.println("-------------------Tagline-----------------------------"); System.out.println(ws.getSingleHTMLScriptData("

", "

"));

Para todas las tags de anclaje:

 System.out.println("-------------------All anchor tag-----------------------------"); al=ws.getImageTagData("a", "href"); for(String adata: al) { System.out.println(adata); } 

Para datos de imagen:

 System.out.println("-------------------Image data-----------------------------"); System.out.println(ws.getImageTagData("img", "src")); System.out.println(ws.getImageTagData("img", "alt")); 

Para Ul-Li Data:

 System.out.println("-------------------Ul-Li Data-----------------------------"); al=ws.getSingleHTMLScriptData("
    ", "
","
  • ","
  • "); for(String str:al) { System.out.println(str); }

    Para ver el código fuente completo, consulte este tutorial .

    ¡Podrías buscar en jwht-scrapper !

    Este es un marco completo de eliminación de desechos que tiene todas las características que un desarrollador podría esperar de un scrapper web:

    • Soporte Proxy
    • Soporte de señal de advertencia para detectar captchas y más
    • Complejas funciones de enlace complejo
    • Multihilo
    • Varios retrasos en el desguace cuando sea necesario
    • Agente de usuario rotativo
    • Solicitud de rebash automático y autorizaciones de redirecciones HTTP
    • Encabezados HTTP, cookies y más soporte
    • Soporte GET y POST
    • Configuración de anotación
    • Métrica detallada de desguace
    • Manejo asincrónico del cliente scrapper
    • Marco completo de jwht-htmltopojo para mapear HTML a POJO
    • Manejo de formato de entrada personalizado y mapeo JSON integrado -> POJO
    • Control completo de manejo de excepciones
    • Registro detallado con log4j
    • Inyección POJO
    • Ganchos de procesamiento personalizado
    • API fácil de usar y bien documentada

    Funciona con (jwht-htmltopojo) [ https://github.com/whimtrip/jwht-htmltopojo ) lib que itsef usa Jsoup mencionado por otras personas aquí.

    ¡Juntos lo ayudarán a construir impresionantes scrappers que mapeen directamente HTML a POJOs y eludiendo cualquier problema de descarte clásico en cuestión de minutos!

    Espero que esto pueda ayudar a algunas personas aquí!

    Descargo de responsabilidad, yo soy el que lo desarrolló, no dude en decirme sus comentarios!

    Si desea automatizar el raspado de páginas o datos de gran cantidad, puede probar Gotz ETL .

    Es completamente impulsado por un modelo como una verdadera herramienta de ETL. La estructura de datos, el flujo de trabajo de tareas y las páginas para raspar se definen con un conjunto de archivos de definición XML y no se requiere encoding. La consulta puede escribirse utilizando Selectores con JSoup o XPath con HtmlUnit.

    Intereting Posts