45 votes

Analyser le code HTML d'un site Web avec JAVA

Je veux analyser un site web simple et récupérer des informations à partir de ce site.

J'avais l'habitude d'analyser les fichiers XML avec DocumentBuilderFactory, j'ai essayé de faire la même chose pour le fichier html mais il y a toujours une boucle infinie.

    URL url = new URL("http://www.deneme.com");
    URLConnection uc = url.openConnection();

    InputStreamReader input = new InputStreamReader(uc.getInputStream());
    BufferedReader in = new BufferedReader(input);
    String inputLine;

     FileWriter outFile = new FileWriter("orhancan");
     PrintWriter out = new PrintWriter(outFile);

    while ((inputLine = in.readLine()) != null) {
        out.println(inputLine);
    }

    in.close();
    out.close();

    File fXmlFile = new File("orhancan");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXmlFile);

    NodeList prelist = doc.getElementsByTagName("body");
    System.out.println(prelist.getLength());

Quel est le problème ? Ou existe-t-il un moyen plus simple de récupérer des données d'un site Web pour une balise html donnée ?

88voto

Amir Raminfar Points 17939

Il existe un moyen beaucoup plus simple de le faire. Je suggère d'utiliser JSoup . Avec JSoup, vous pouvez faire des choses comme

Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");

Ou si vous voulez le corps :

Elements body = doc.select("body");

Ou si vous voulez tous les liens :

Elements links = doc.select("body a");

Vous n'avez plus besoin d'obtenir des connexions ou de gérer des flux. C'est simple. Si vous avez déjà utilisé jQuery, c'est très similaire à cela.

22voto

Diego Palomar Points 1253

Définitivement JSoup est la réponse ;-)

5voto

Jan Points 1670

Le HTML n'est pas toujours un XML valide et bien formaté. Essayez un analyseur HTML spécial au lieu d'un analyseur XML. Il y en a plusieurs disponibles :

http://java-source.net/open-source/html-parsers

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X