web-dev-qa-db-fra.com

comment convertir un texte HTML en texte brut?

copains Je dois analyser la description à partir de l'URL, où le contenu analysé contient peu de balises HTML. Comment le convertir en texte brut?.

20
MGSenthil

Se débarrasser des balises HTML est simple:

// replace all occurrences of one or more HTML tags with optional
// whitespace inbetween with a single space character 
String strippedText = htmlText.replaceAll("(?s)<[^>]*>(\\s*<[^>]*>)*", " ");

Mais malheureusement, les exigences ne sont jamais aussi simples:

Généralement, les éléments <p> et <div> nécessitent une manipulation séparée, il peut y avoir des blocs cdata avec des caractères > (par exemple, javascript) qui gâchent la regex, etc.

21
Sean Patrick Floyd

Vous pouvez utiliser cette seule ligne pour supprimer les balises html et les afficher sous forme de texte brut.

htmlString=htmlString.replaceAll("\\<.*?\\>", "");
8
Kandha

Utilisez un analyseur HTML comme htmlCleaner

Pour une réponse détaillée: Comment supprimer une balise HTML en Java

4
ankitjaininfo

Je vous recommande d'analyser le code HTML brut avec jTidy , ce qui devrait vous donner un résultat sur lequel vous pouvez écrire des expressions xpath. C'est le moyen le plus robuste que j'ai trouvé de gratter le HTML.

1
Jon Freedman

Si vous souhaitez analyser comme un affichage de navigateur, utilisez:

import net.htmlparser.jericho.*;
import Java.util.*;
import Java.io.*;
import Java.net.*;

public class RenderToText {
    public static void main(String[] args) throws Exception {
        String sourceUrlString="data/test.html";
        if (args.length==0)
          System.err.println("Using default argument of \""+sourceUrlString+'"');
        else
            sourceUrlString=args[0];
        if (sourceUrlString.indexOf(':')==-1) sourceUrlString="file:"+sourceUrlString;
        Source source=new Source(new URL(sourceUrlString));
        String renderedText=source.getRenderer().toString();
        System.out.println("\nSimple rendering of the HTML document:\n");
        System.out.println(renderedText);
  }
}

J'espère que cela aidera à analyser la table également dans le format du navigateur.

Merci, Ganesh

0
Ganesan Palanisamy

J'avais besoin d'une représentation en texte brut de certains fichiers HTML comprenant des balises FreeMarker. Le problème m'a été confié avec une solution JSoup, mais JSoup échappait aux balises FreeMarker, rompant ainsi la fonctionnalité. J'ai aussi essayé htmlCleaner (sourceforge), mais cela laissait l'en-tête HTML et le contenu du style (balises supprimées). http://stackoverflow.com/questions/1518675/open-source-Java-library-for-html-to-text-conversion/1519726#1519726

Mon code: 

return new net.htmlparser.jericho.Source(html).getRenderer().setMaxLineLength(Integer.MAX_VALUE).setNewLine(null).toString();

La maxLineLength garantit que les lignes ne sont pas encapsulées artificiellement à 80 caractères. La setNewLine(null) utilise le même caractère de nouvelle ligne que la source.

0
John Camerin