HTML ist der Kern des WEB. Alle Seiten, die Sie im Internet sehen, sind HTML, unabhängig davon, ob sie dynamisch durch JavaScript, JSP, PHP, ASP oder andere WEB-Technologien generiert werden. Ihr Browser analysiert den HTML-Code und rendert ihn für Sie. Was aber, wenn Sie das HTML-Dokument selbst in einem Java-Programm analysieren und bestimmte Elemente, Tags, Attribute finden oder prüfen müssen, ob ein bestimmtes Element vorhanden ist? Wenn Sie schon seit vielen Jahren in Java programmieren, haben Sie meiner Meinung nach versucht, XML zu parsen und Parser wie DOM oder SAX verwendet, aber es ist sehr wahrscheinlich, dass Sie noch nie HTML-Parsing durchgeführt haben. Was noch ironischer ist, ist, dass es in Java-Anwendungen nur sehr selten vorkommt, dass Sie HTML-Dokumente analysieren müssen, und dies gilt nicht für Servlets oder andere Java-WEB-Technologien. Was noch schlimmer ist, ist, dass der JDK-Kern keine HTTP- oder HTML-Bibliotheken enthält, zumindest kenne ich sie nicht. Aus diesem Grund müssen viele Java-Programmierer beim Parsen von HTML-Dateien zuerst bei Google nachsehen, wie man ein HTML-Tag in Java extrahiert. Als ich diesen Bedarf hatte, glaubte ich, dass es einige Open-Source-Bibliotheken geben würde, die dies erreichen könnten, aber ich hätte nicht erwartet, dass es eine so coole und voll funktionsfähige Bibliothek wie JSoup geben würde. Es unterstützt nicht nur das Lesen und Parsen von HTML-Dokumenten, sondern ermöglicht Ihnen auch, beliebige Elemente aus HTML-Dateien sowie deren Attribute und CSS-Eigenschaften zu extrahieren und diese auch zu ändern. Mit JSoup können Sie fast alles mit HTML-Dokumenten machen. Wir werden ein Beispiel sehen, wie man eine HTML-Datei von der Google-Startseite oder einer beliebigen URL in Java herunterlädt und analysiert.
Was ist die JSoup-Bibliothek?
Jsoup ist eine Open-Source-Java-Bibliothek, mit der HTML in praktischen Anwendungen verarbeitet werden kann. Es bietet eine sehr praktische API für die Datenextraktion und -änderung und nutzt die Vorteile von DOM-, CSS- und JQuery-Stilmethoden voll aus. Jsoup implementiert die WAHTWG-HTML5-Spezifikation und das DOM, das es aus HTML analysiert, ist genau das gleiche wie das, das von modernen Browsern wie Chrome und Firefox analysiert wird. Hier sind einige nützliche Funktionen der Jsoup-Bibliothek:
1.Jsoup kann HTML aus URL, Datei oder Zeichenfolge abrufen und analysieren.
2.Jsoup kann Daten mithilfe von DOM-Traversal oder CSS-Selektoren finden und extrahieren.
3. Sie können Jsoup verwenden, um HTML-Elemente, Attribute und Text zu ändern.
4.Jsoup stellt durch eine sichere Whitelist sicher, dass die von Benutzern übermittelten Inhalte sauber sind, um XSS-Angriffe zu verhindern.
5.Jsoup kann auch ordentliches HTML ausgeben.
Jsoup wurde entwickelt, um alle Arten von HTML zu verarbeiten, die im wirklichen Leben vorkommen, einschließlich korrektem und gültigem HTML sowie unvollständiger und ungültiger Tag-Sammlungen. Eine der zentralen Wettbewerbsfähigkeiten von Jsoup ist seine Robustheit.
Verwenden von Jsoup für die HTML-Analyse in Java
In diesem Java-HTML-Parsing-Tutorial sehen wir drei verschiedene Beispiele für die Verwendung von Jsoup zum Parsen und Durchlaufen von HTML in Java. Im ersten Beispiel analysieren wir einen HTML-String, dessen Inhalt ein aus String-Literalen in Java zusammengesetztes Tag ist. Im zweiten Beispiel laden wir das HTML-Dokument aus dem WEB herunter und im dritten Beispiel laden wir eine HTML-Beispieldatei login.html zum Parsen. Diese Datei ist ein Beispiel für ein HTML-Dokument. Sie enthält ein Titel-Tag und ein div-Tag im Textkörper, der ein Formular enthält. Es verfügt über Eingabe-Tags zum Abrufen von Benutzernamen und Passwörtern sowie Schaltflächen zum Senden und Zurücksetzen für den nächsten Schritt. Es handelt sich um korrektes und gültiges HTML, d. h. alle Tags und Attribute sind korrekt geschlossen. Hier ist unsere Beispiel-HTML-Datei:
Kopieren Sie den Codecode wie folgt:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<Kopf>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Anmeldeseite</title>
</head>
<Körper>
<div id="login" >
<form action="login.do">
Benutzername: <input id="username" type="text" /><br>
Passwort: <input id="password" type="password" /><br>
<input id="submit" type="submit" />
<input id="reset" type="reset" />
</form>
</div>
</body>
</html>
Die Verwendung von Jsoup zum Parsen von HTML ist sehr einfach. Sie müssen lediglich die statische Methode Jsoup.parse() aufrufen und ihr Ihren HTML-String übergeben. Jsoup bietet mehrere überladene parse()-Methoden, die HTML-Dateien aus Strings, Dateien, URIs, URLs und sogar InputStreams lesen können. Wenn es sich nicht um eine UTF-8-Kodierung handelt, können Sie auch die Zeichenkodierung angeben, damit die HTML-Datei korrekt gelesen werden kann. Nachfolgend finden Sie eine vollständige Liste der HTML-Parsing-Methoden in der Jsoup-Bibliothek. Die Methode parse(String html) analysiert den eingegebenen HTML-Code in ein neues Dokument. In Jsoup erbt Document von Element, das wiederum von Node erbt. Derselbe TextNode erbt auch von Node. Solange Sie eine Zeichenfolge ungleich Null übergeben, erhalten Sie auf jeden Fall eine erfolgreiche und aussagekräftige Analyse und erhalten ein Dokument mit Kopf- und Körperelementen. Sobald Sie dieses Dokument erhalten haben, können Sie die entsprechenden Methoden für Document und seine übergeordneten Klassen Element und Node aufrufen, um die gewünschten Daten abzurufen.
Java-Programm, das HTML-Dokumente analysiert
Nachfolgend finden Sie ein vollständiges Java-Programm, das HTML-Strings, aus dem Internet heruntergeladene HTML-Dateien und HTML-Dateien im lokalen Dateisystem analysiert. Sie können Eclipse IDE oder andere IDE oder sogar Befehle verwenden, um dieses Programm auszuführen. In Eclipse ist das ganz einfach: Kopieren Sie einfach diesen Code, erstellen Sie ein neues Java-Projekt, klicken Sie mit der rechten Maustaste auf das src-Paket und fügen Sie es ein. Eclipse erstellt das richtige Paket und die Java-Quelldatei mit demselben Namen, sodass der Arbeitsaufwand minimal ist. Wenn Sie bereits über ein Java-Beispielprojekt verfügen, ist nur ein Schritt erforderlich. Das folgende Java-Programm zeigt drei verschiedene Beispiele für das Parsen und Durchlaufen von HTML-Dateien. Im ersten Beispiel analysieren wir direkt eine Zeichenfolge mit HTML-Inhalt, im zweiten Beispiel analysieren wir eine von einer URL heruntergeladene HTML-Datei und im dritten Beispiel laden wir ein HTML-Dokument aus dem lokalen Dateisystem und analysieren es. Die Parse-Methode wird sowohl im ersten als auch im dritten Beispiel verwendet, um ein Document-Objekt abzurufen, das Sie abfragen können, um einen beliebigen Tag- oder Attributwert zu extrahieren. Im zweiten Beispiel verwenden wir die Methode Jsoup.connect, die eine URL-Verbindung erstellt, den HTML-Code herunterlädt und ihn analysiert. Diese Methode gibt auch ein Dokument zurück, das für nachfolgende Abfragen und zum Abrufen des Werts eines Tags oder Attributs verwendet werden kann.
Kopieren Sie den Codecode wie folgt:
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
/**
[*] Java-Programm zum Parsen/Lesen von HTML-Dokumenten aus einer Datei mithilfe der Jsoup-Bibliothek.
[*] Jsoup ist eine Open-Source-Bibliothek, die es Java-Entwicklern ermöglicht, HTML zu analysieren
[*] Dateien und extrahieren Sie Elemente, bearbeiten Sie Daten, ändern Sie den Stil mithilfe von DOM, CSS und
[*] JQuery-ähnliche Methode.
[*]
[*] @Autor Javin Paul
[*]/
öffentliche Klasse HTMLParser{
public static void main(String args[]) {
// HTML-String mithilfe der JSoup-Bibliothek analysieren
String HTMLSTring = "<!DOCTYPE html>"
+ „<html>“
+ „<Kopf>“
+ „<title>JSoup-Beispiel</title>“
+ "</head>"
+ „<Körper>“
+ „|[b]HelloWorld[/b]“
+ ""
+ „</body>“
+ "</html>";
Dokument html = Jsoup.parse(HTMLSTring);
String title = html.title();
String h1 = html.body().getElementsByTag("h1").text();
System.out.println("HTML-Zeichenfolge in JSoup eingeben:" + HTMLSTring);
System.out.println("Nach dem Parsen Titel: " + Titel);
System.out.println("Nach dem Parsen, Überschrift: " + h1);
// JSoup Beispiel 2 – HTML-Seite von URL lesen
Dokumentdokument;
versuchen {
doc = Jsoup.connect("http://google.com/").get();
title = doc.title();
} Catch (IOException e) {
e.printStackTrace();
}
System.out.println("Jsoup Kann HTML-Seite von URL lesen, Titel: " + Titel);
// JSoup-Beispiel 3 – Parsen einer HTML-Datei in Java
//Document htmlFile = Jsoup.parse("login.html", "ISO-8859-1"); // falsch
Dokument htmlFile = null;
versuchen {
htmlFile = Jsoup.parse(new File("login.html"), "ISO-8859-1");
} Catch (IOException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
} // Rechts
title = htmlFile.title();
Element div = htmlFile.getElementById("login");
String cssClass = div.className(); // Klasse aus HTML-Element abrufen
System.out.println("Jsoup kann HTML-Dateien auch direkt analysieren");
System.out.println("title: " + title);
System.out.println("class of div tag : " + cssClass);
}
}
Ausgabe:
Kopieren Sie den Codecode wie folgt:
Geben Sie eine HTML-Zeichenfolge in JSoup ein:<!DOCTYPE html><html><head><title>JSoup-Beispiel</title></head><body><table><tr><td><h1>HelloWorld</h1> </tr></table></body></html>
Nach dem Parsen Titel: JSoup-Beispiel
Nach dem Parsen Überschrift: HelloWorld
Jsoup Kann HTML-Seiten von URL lesen, Titel: Google
Jsoup kann auch den Titel der HTML-Datei direkt analysieren: Anmeldeseite
Klasse des Div-Tags: einfach
Der Vorteil von Jsoup ist, dass es sehr robust ist. Der Jsoup-HTML-Parser analysiert den von Ihnen bereitgestellten HTML-Code so sauber wie möglich, unabhängig davon, ob der HTML-Code wohlgeformt ist. Es kann Fehler wie nicht geschlossene Tags (z. B. Java <p>Scala zu <p>JavaScala) und implizite Tags (z. B. ein bloßes |Java ist großartig in | eingeschlossen) verarbeiten und kann jederzeit eine Dokumentstruktur (HTML) ausgeben (einschließlich Kopf und Körper, und nur die richtigen Elemente werden in den Kopf eingefügt). So wird HTML in Java analysiert. Jsoup ist eine ausgezeichnete und robuste Open-Source-Bibliothek, die das Lesen von HTML-Dokumenten, Textfragmenten, HTML-Strings und das Parsen von HTML-Inhalten direkt aus dem WEB sehr einfach macht. In diesem Artikel haben wir gelernt, wie man ein bestimmtes HTML-Tag in Java erhält, da wir im ersten Beispiel den Wert des Titels und der H1-Tags in Text extrahiert haben, und im dritten Beispiel haben wir gelernt, wie man ihn durch Extrahieren von CSS-Eigenschaften erhält Erhalten Sie Eigenschaftswerte aus HTML-Tags. Zusätzlich zur leistungsstarken Methode html.body().getElementsByTag("h1").text() im jQuery-Stil können Sie auch beliebige HTML-Tags extrahieren und sie bietet auch Funktionen wie Document.title() und Element.className( ) Mit der praktischen Methode können Sie schnell den Titel und die CSS-Klasse abrufen. Ich hoffe, Sie haben Spaß mit JSoup und wir werden bald weitere Beispiele dieser API sehen.