Jsoup - Extraire et parser le code HTML en Java
Jsoup ist ein bookseller de Java der den Code verarbeitet HTML. Es ist ein API sehr praktisch zum Extrahieren und Bearbeiten von Daten mit den besten Methoden von DOM, CSS et jquery.
jsoup implementiert die Eigenschaften von HTML5 und analysiert den HTML-Code in einem Baum (DOM), wie es moderne Browser tun. JSOUP ist ein Open-Source-Projekt, das unter dem Dach der MIT Lizenz. Den Quellcode finden Sie in GitHub.
Funktionen:
- Analysieren Sie einen HTML-Code aus einer URL, einer Datei oder einem String.- Suchen und Extrahieren von Daten mithilfe des DOM-Baums und CSS.
- Elemente und Text bearbeiten HTML.
- Verhindern Sie XSS-Angriffe, indem Sie das Abonnement des Benutzers löschen.
- Erstellen Sie einen ordentlichen HTML-Code.
JSoup ist so konzipiert, dass es mit verschiedenen HTML-Versionen angepasst werden kann, es erstellt einen analysierten Baum.
Klicken Sie, um style="color: blue;" zu < > Download jsoup.
Beispiel:
Rufen Sie die Wikipedia-Seite ab, transformieren Sie sie und analysieren Sie sie als DOM und wählen Sie aus dem Nachrichtenbereich eine Liste von Elementen aus.
Dokument doc = Jsoup.connect("http://fr.wikipedia.org").get();
1 - Analysieren eines Dokuments
Dieser Code dient zur Analyse von a document HTML:
String html = " < Kopf> < Titel> Erster Titel "
+ "< Körper> < Beispielcode zum Dokument ";
Dokument doc = Jsoup.parse(html);
+ "< Körper> < Beispielcode zum Dokument ";
Dokument doc = Jsoup.parse(html);
Der Parser wird sein Bestes tun, um aus dem von Ihnen bereitgestellten Code einen klaren HTML-Code zu erstellen, er behandelt:
- Ungeschlossene Tags, z. B.: < blabla verwandeln sich in < blabla
- Implizite Tags, z. B.:
< td> Tisch ist umgeben von < Tabelle> < tr> < td>
- Die Struktur des erstellten Codes respektiert die Standards der HTML-Sprache (Kopf, Körper und die Elemente, aus denen die Seite besteht).
- Ungeschlossene Tags, z. B.: < blabla verwandeln sich in < blabla
- Implizite Tags, z. B.:
< td> Tisch ist umgeben von < Tabelle> < tr> < td>
- Die Struktur des erstellten Codes respektiert die Standards der HTML-Sprache (Kopf, Körper und die Elemente, aus denen die Seite besteht).
2- Analysieren Sie ein Dokument aus einem String
Wir haben den HTML-Code in einem Java-String und wollen ihn aufschlüsseln, um seinen Inhalt zu haben, oder um zu überprüfen, ob er gut geschrieben ist, oder um ihn zu ändern. Der Eintrag kann aus einer Datei oder einem Link aus dem Web gelesen werden.
Sie müssen die vordefinierte Methode verwenden Jsoup.parse(String html) oder Jsoup.parse(String html, String Uri) wenn die Seite aus dem Internet stammt. Siehe class Jsoup.
String html = " < Kopf> < Titel> Titel "
+ "< Körper> < p>html en doc ";
Dokument doc = Jsoup.parse(html);
+ "< Körper> < p>html en doc ";
Dokument doc = Jsoup.parse(html);
Die Methode Jsoup.parse(String html, String Uri) Analysiert die HTML-Code-Eingabe in einem neuen Dokument. Das Argument URI wird verwendet, um relative URLs in absolute URLs umzuwandeln und should Sein Initialisiert mit der URL, deren Dokument wurde Wiederhergestellt. Wenn das nicht möglich ist, können Sie Verwenden Sie die Option Jsoup.parse(String html).
Der als Parameter übergebene String darf nicht null sein und das Ausgabedokument besteht aus weniger als head et de body. Wenn Sie obturerez Eine Ausnahme, bei der Sie feststellen werden, dass die Extraktion des Baums nicht durchgeführt wird. Lesen Sie die documentation für weitere Informationen.
Sobald Sie das Dokument haben, können Sie: Erholen Daten mit den Methoden der Klasse Dokument und höhere Noten Node et Element.
3- Analysieren Sie den Körper
Wir haben ein Stück Body, das wir analysieren wollen. Der Code kann Elemente enthalten, die z. B. kein HTML-Code sind, wie z. B. comments.
Die Lösung besteht darin, die Jsoup.parseBodyFragment(String html).
String html="< div> < Absatz ";
Dokument doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();
Dokument doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();
Die Methode parseBodyFragment erstellt ein leeres Dokument und fügt den analysierten HTML-Code in den Text ein. Wenn Sie die Funktion Jsoup.parse(String html), haben Sie die Dasselbe Ergebnis, aber die Ausgabe als Ein Body-Fragment stellt sicher, dass alle bereitgestellten Elemente analysiert wurden.
Die Methode Document.body() ruft die Elemente ab Unterkörper (Kinderkörpers) ist es gleichbedeutend mit doc.getElementsByTag("body").
Es ist ratsam, vorsichtig zu bleiben, wenn Sie Genesen Daten von Websites, die Skripts enthalten bösartig. Sehen Sie sich die Dokumentation der whitelist und mit der Bestellung clean(String html, Whitelist whitelist).
4- Laden Sie ein Dokument aus einer URL
Um ein HTML-Dokument aus dem Web zu suchen und zu analysieren und die Daten zu finden, müssen Sie die Jsoup.connect(String url).
Document doc = Jsoup.connect("http://siteweb.com/").get();
String title = doc.title();
Die Methode connect(String url) erstellt eine neue connexion und get() sucht und analysiert die HTML-Datei. Wenn a Fehler, der während der Suche aufgetreten ist, wird eine Ausnahme being triggered.
Die Schnittstelle connexion ist konzipiert in chaining für eine bestimmte Antwort :
Document doc = Jsoup.connect("http://siteweb.com")
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
.post();
Diese Methode unterstützt nur URLs der Protokolle http und https. Wenn Sie eine Datei hochladen müssen, verwenden Sie am besten die Methode parse(Datei in, String charsetName).
5- Laden Sie ein Dokument aus einer Datei
Wir haben eine Datei, die HTML enthält, und wir möchten sie laden, dann analysieren und die Daten extrahieren, um sie zu bearbeiten. Sie sollten die Methode Jsoup.parse(File in, String encoding, String Uri).
Datei Eingabe = new Datei("/temp/siteinput.html");
Document doc = Jsoup.parse(siteinput, "UTF-8", "http://siteweb.com/");
Der Parameter Uri wird verwendet, um relative URLs im Dokument vor dem vorkommen. Sie können einen leeren String übergeben.
Es gibt eine andere ähnliche Methode parse(File in, String encoding). Die parse()-Methode verwendet den Dateipfad als Uri. Diese Methode ist effektiv, wenn Sie auf einem lokalen Server arbeiten.