una - Raspado web con Java
load html java (9)
jsoup
Extraer el título no es difícil, y tiene muchas opciones, busque aquí en Desbordamiento de pila 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.
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
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("<h2 id=''project_tagline''>", "</h2>"));
Para todas las etiquetas 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("<ul>", "</ul>","<li>","</li>");
for(String str:al)
{
System.out.println(str);
}
Para ver el código fuente completo, consulte este tutorial .
Mire un analizador HTML como TagSoup, HTMLCleaner o NekoHTML.
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 codificación. La consulta puede escribirse utilizando Selectores con JSoup o XPath con HtmlUnit.
Su mejor opción es usar Selenium Web Driver ya que
- Proporciona retroalimentación visual al codificador (vea su raspado en acción, vea dónde se detiene)
- Exacto y consistente, ya que controla directamente el navegador que utiliza.
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.
También hay Jaunt Java Web Scraping & JSON Querying - http://jaunt-api.com
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 )
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