9
votes

Comment analyser uniquement le texte de HTML

Comment puis-je analyser uniquement le texte d'une page Web à l'aide de JSOUP à l'aide de Java?


0 commentaires

3 Réponses :


19
votes

1 commentaires

Comment exclure des éléments invisibles? (E.G. Afficher: Aucun)



0
votes

Eh bien, voici une méthode rapide que j'ai jetée une fois. Il utilise des expressions régulières pour faire le travail. La plupart des gens conviendront que ce n'est pas un bon moyen de le faire. Ainsi, utilisez à vos risques et périls.

public static String getPlainText(String html) {
    String htmlBody = html.replaceAll("<hr>", ""); // one off for horizontal rule lines
    String plainTextBody = htmlBody.replaceAll("<[^<>]+>([^<>]*)<[^<>]+>", "$1");
    plainTextBody = plainTextBody.replaceAll("<br ?/>", "");
    return decodeHtml(plainTextBody);
}


5 commentaires

Hmmm ... pourquoi n'utilisez-vous pas simple regexp: remplaillel ("<[^>] +>", "") ?


@CROZIN, eh bien, je m'appelais comment utiliser les références de dos, je suppose. On dirait que le vôtre fonctionnerait probablement aussi.


cela fait mal! -> Stackoverflow.com/questions/1732348/...


@sleep, je suis bien conscient que l'analyse HTML avec regex peut être une idée terrible. Mais parfois c'est en fait un choix ok. J'ai mentionné qu'ils devraient l'utiliser à leurs propres risques.


@jjnguy: :) - juste pour le plaisir de ça



2
votes

Utilisation de cours faisant partie de la JDK:

import java.io.*;
import java.net.*;
import javax.swing.text.*;
import javax.swing.text.html.*;

class GetHTMLText
{
    public static void main(String[] args)
        throws Exception
    {
        EditorKit kit = new HTMLEditorKit();
        Document doc = kit.createDefaultDocument();

        // The Document class does not yet handle charset's properly.
        doc.putProperty("IgnoreCharsetDirective", Boolean.TRUE);

        // Create a reader on the HTML content.

        Reader rd = getReader(args[0]);

        // Parse the HTML.

        kit.read(rd, doc, 0);

        //  The HTML text is now stored in the document

        System.out.println( doc.getText(0, doc.getLength()) );
    }

    // Returns a reader on the HTML data. If 'uri' begins
    // with "http:", it's treated as a URL; otherwise,
    // it's assumed to be a local filename.

    static Reader getReader(String uri)
        throws IOException
    {
        // Retrieve from Internet.
        if (uri.startsWith("http:"))
        {
            URLConnection conn = new URL(uri).openConnection();
            return new InputStreamReader(conn.getInputStream());
        }
        // Retrieve from file.
        else
        {
            return new FileReader(uri);
        }
    }
}


0 commentaires