Scraping Web avec Java


Je ne suis pas en mesure de trouver une bonne API basée sur Java de grattage Web. Le site que je dois gratter ne fournit pas non plus d'API; je veux parcourir toutes les pages Web en utilisant un pageID et extraire les titres HTML / autres choses dans leurs arbres DOM.

Existe-t-il d'autres moyens que le grattage Web?

Merci

Author: ZhiXingZhe - WangYuQi, 2010-07-08

9 answers

Jsoup

Extraire le titre n'est pas difficile, et vous avez de nombreuses options, recherchez ici sur Stack Overflow pour "Java HTML parsers ". L'un d'eux est Jsoup.

Vous pouvez naviguer dans la page en utilisant DOM si vous connaissez la structure de la page, voir http://jsoup.org/cookbook/extracting-data/dom-navigation

C'est une bonne bibliothèque et je l'ai utilisée dans mes derniers projets.

 83
Author: Wajdy Essam, 2018-06-21 00:45:21

Votre meilleur pari est d'utiliser le pilote Web Selenium car il

  1. Fournit un retour visuel au codeur (voir votre grattage en action, voir où il s'arrête)
  2. Précis et cohérent car il contrôle directement le navigateur que vous utilisez.
  3. Lent. Ne frappe pas les pages Web comme HtmlUnit, mais parfois vous ne voulez pas frapper trop vite.

    Htmlunit est rapide mais est horrible à gérer Javascript et AJAX.

 18
Author: KJW, 2010-09-23 19:45:12

HTMLUnit peut être utilisé pour faire du grattage Web, il prend en charge l'appel de pages, le remplissage et la soumission de formulaires. J'ai utilisé dans mon projet. C'est une bonne bibliothèque java pour le grattage Web. lire ici pour plus d'

 12
Author: Beschi, 2011-07-21 12:22:16

Mechanize pour Java serait un bon ajustement pour cela, et comme Wadjy Essam l'a mentionné, il utilise JSoup pour le HMLT. mechanize est un client HTTP/HTML dynamique qui prend en charge la navigation, les soumissions de formulaires et le grattage de pages.

Http://gistlabs.com/software/mechanize-for-java/ (et le GitHub ici https://github.com/GistLabs/mechanize)

 4
Author: user1374041, 2012-09-17 21:31:21

Il y a aussi Jaunt Java Web Scraping & JSON Interrogation - http://jaunt-api.com

 4
Author: Slavus, 2017-09-19 14:47:50

Regardez un analyseur HTML tel que TagSoup, HTMLCleaner ou NekoHTML.

 2
Author: Mikos, 2010-07-08 09:45:47

En utilisant web scraper, vous pouvez extraire le contenu utile de la page Web et le convertir dans n'importe quel format, le cas échéant.

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

Maintenant, votre session de mise au rebut Web démarre et est prête à supprimer ou extraire des données en java en utilisant bibliothèque webscrap4j.

Pour Le Titre :

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

Pour le slogan:

System.out.println("-------------------Tagline-----------------------------");
System.out.println(ws.getSingleHTMLScriptData("<h2 id='project_tagline'>", "</h2>"));

Pour toutes les balises d'ancrage:

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

Pour les données d'image:

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

Pour les données Ul-Li :

System.out.println("-------------------Ul-Li Data-----------------------------");
   al=ws.getSingleHTMLScriptData("<ul>", "</ul>","<li>","</li>");
   for(String str:al)
   {
    System.out.println(str);
   }

Pour le code source complet de vérifier cette tutoriel.

 1
Author: GeekOnJava, 2017-12-19 09:28:37

Vous devriez regarder dans jwht-scrapper!

Il s'agit d'un framework de scrapping complet qui a toutes les fonctionnalités qu'un développeur peut attendre d'un scrappeur Web:

Il fonctionne avec (jwht-htmltopojo) [ https://github.com/whimtrip/jwht-htmltopojo ) lib que itsef utilise Jsoup mentionné par plusieurs autres personnes ici.

Ensemble, ils vous aideront à construire une cartographie impressionnante de scrappers directement HTML à POJOs et en contournant tous les problèmes de mise au rebut classique en seulement quelques minutes!

J'espère que cela pourrait aider certaines personnes ici!

Avertissement, je suis celui qui l'a développé, n'hésitez pas à me faire part de vos remarques!

 1
Author: Louis-Wht, 2018-08-10 15:39:10

Si vous souhaitez automatiser le grattage de grandes quantités de pages ou de données, vous pouvez essayer Gotz ETL.

Il est complètement piloté par le modèle comme un véritable outil ETL. La structure des données, le flux de travail des tâches et les pages à gratter sont définis avec un ensemble de fichiers de définition XML et aucun codage n'est requis. La requête peut être écrite à l'aide de sélecteurs avec JSoup ou XPath avec HtmlUnit.

 0
Author: Maithilish, 2018-01-23 16:46:03