jsoup - Kurzanleitung

jsoup ist eine Java-basierte Bibliothek für die Arbeit mit HTML-basierten Inhalten. Es bietet eine sehr praktische API zum Extrahieren und Bearbeiten von Daten unter Verwendung der besten DOM-, CSS- und jquery-ähnlichen Methoden. Es implementiert die WHATWG HTML5-Spezifikation und analysiert HTML im selben DOM wie moderne Browser.

jsoup libary implementiert die WHATWG HTML5-Spezifikation und analysiert einen HTML-Inhalt in demselben DOM wie in den modernen Browsern.

Die jsonp-Bibliothek bietet die folgenden Funktionen.

  • Multiple Read Support - Es liest und analysiert HTML mithilfe von URL, Datei oder Zeichenfolge.

  • CSS Selectors - Es kann Daten mithilfe von DOM-Traversal- oder CSS-Selektoren finden und extrahieren.

  • DOM Manipulation - Es kann die HTML-Elemente, Attribute und den Text bearbeiten.

  • Prevent XSS attacks - Es kann vom Benutzer eingereichte Inhalte anhand einer bestimmten sicheren Whitelist bereinigen, um XSS-Angriffe zu verhindern.

  • Tidy - Es gibt ordentliches HTML aus.

  • Handles invalid data - jsoup kann nicht geschlossene Tags und implizite Tags verarbeiten und die Dokumentstruktur zuverlässig erstellen.

Einrichtung der lokalen Umgebung

JUnit ist ein Framework für Java. Die allererste Voraussetzung ist daher, dass JDK auf Ihrem Computer installiert ist.

System Anforderungen

JDK 1,5 oder höher.
Erinnerung Keine Mindestanforderung.
Festplattenplatz Keine Mindestanforderung.
Betriebssystem Keine Mindestanforderung.

Schritt 1: Überprüfen Sie die Java-Installation auf Ihrem Computer

Öffnen Sie zunächst die Konsole und führen Sie einen Java-Befehl aus, der auf dem Betriebssystem basiert, an dem Sie arbeiten.

Betriebssystem Aufgabe Befehl
Windows Öffnen Sie die Befehlskonsole c: \> Java-Version
Linux Öffnen Sie das Befehlsterminal $ java -version
Mac Terminal öffnen Maschine: <joseph $ java -version

Lassen Sie uns die Ausgabe für alle Betriebssysteme überprüfen -

Betriebssystem Ausgabe
Windows

Java-Version "1.6.0_21"

Java (TM) SE-Laufzeitumgebung (Build 1.6.0_21-b07)

Java HotSpot (TM) -Client-VM (Build 17.0-b17, gemischter Modus, Freigabe)

Linux

Java-Version "1.6.0_21"

Java (TM) SE-Laufzeitumgebung (Build 1.6.0_21-b07)

Java HotSpot (TM) -Client-VM (Build 17.0-b17, gemischter Modus, Freigabe)

Mac

Java-Version "1.6.0_21"

Java (TM) SE-Laufzeitumgebung (Build 1.6.0_21-b07)

64-Bit-Server-VM von Java HotSpot (TM) (Build 17.0-b17, gemischter Modus, Freigabe)

Wenn auf Ihrem System kein Java installiert ist, laden Sie das Java Software Development Kit (SDK) über den folgenden Link herunter https://www.oracle.com. Wir gehen davon aus, dass Java 1.6.0_21 die installierte Version für dieses Tutorial ist.

Schritt 2: Stellen Sie die JAVA-Umgebung ein

Stellen Sie die JAVA_HOMEUmgebungsvariable, die auf den Speicherort des Basisverzeichnisses verweist, in dem Java auf Ihrem Computer installiert ist. Zum Beispiel.

Betriebssystem Ausgabe
Windows Setzen Sie die Umgebungsvariable JAVA_HOME auf C: \ Programme \ Java \ jdk1.6.0_21
Linux export JAVA_HOME = / usr / local / java-current
Mac export JAVA_HOME = / Library / Java / Home

Hängen Sie den Java-Compiler-Speicherort an den Systempfad an.

Betriebssystem Ausgabe
Windows Hängen Sie die Zeichenfolge an C:\Program Files\Java\jdk1.6.0_21\bin am Ende der Systemvariablen, Path.
Linux export PATH = $ PATH: $ JAVA_HOME / bin /
Mac nicht benötigt

Überprüfen Sie die Java-Installation mit dem Befehl java -version wie oben erklärt.

Schritt 3: Laden Sie das jsoup-Archiv herunter

Laden Sie die neueste Version der jsoup jar-Datei aus dem Maven Repository herunter . Zum Zeitpunkt des Schreibens dieses Tutorials haben wir jsoup-1.8.3.jar heruntergeladen und in den Ordner C: \> jsoup kopiert.

Betriebssystem Archivname
Windows jsoup-1.8.3.jar
Linux jsoup-1.8.3.jar
Mac jsoup-1.8.3.jar

Schritt 4: Stellen Sie die jsoup-Umgebung ein

Stellen Sie die JSOUP_HOMEUmgebungsvariable, die auf den Speicherort des Basisverzeichnisses verweist, in dem jsoup jar auf Ihrem Computer gespeichert ist. Nehmen wir an, wir haben jsoup-1.8.3.jar im JSOUP-Ordner gespeichert.

Sr.Nr. Betriebssystem & Beschreibung
1

Windows

Setzen Sie die Umgebungsvariable JSOUP_HOME auf C: \ JSOUP

2

Linux

export JSOUP_HOME = / usr / local / JSOUP

3

Mac

export JSOUP_HOME = / Library / JSOUP

Schritt 5: Setzen Sie die Variable CLASSPATH

Stellen Sie die CLASSPATH Umgebungsvariable, die auf den Speicherort des JSOUP-JARs verweist.

Sr.Nr. Betriebssystem & Beschreibung
1

Windows

Setzen Sie die Umgebungsvariable CLASSPATH auf% CLASSPATH%;% JSOUP_HOME% \ jsoup-1.8.3.jar;.;

2

Linux

export CLASSPATH = $ CLASSPATH: $ JSOUP_HOME / jsoup-1.8.3.jar:.

3

Mac

export CLASSPATH = $ CLASSPATH: $ JSOUP_HOME / jsoup-1.8.3.jar:.

Das folgende Beispiel zeigt das Parsen einer HTML-Zeichenfolge in ein Dokumentobjekt.

Syntax

Document document = Jsoup.parse(html);

Wo

  • document - Das Dokumentobjekt repräsentiert das HTML-DOM.

  • Jsoup - Hauptklasse zum Parsen des angegebenen HTML-Strings.

  • html - HTML-Zeichenfolge.

Beschreibung

Die Methode parse (String html) analysiert den eingegebenen HTML-Code in ein neues Dokument. Dieses Dokumentobjekt kann zum Durchlaufen und Abrufen von Details des HTML-Doms verwendet werden.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupTester {
   public static void main(String[] args) {
   
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body><p>Sample Content</p></body></html>";
      Document document = Jsoup.parse(html);
      System.out.println(document.title());
      Elements paragraphs = document.getElementsByTag("p");
      for (Element paragraph : paragraphs) {
            System.out.println(paragraph.text());
      }
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Sample Title
Sample Content

Das folgende Beispiel zeigt das Parsen eines HTML-Fraging-Strings in ein Element-Objekt als HTML-Body.

Syntax

Document document = Jsoup.parseBodyFragment(html);
Element body = document.body();

Wo

  • document - Das Dokumentobjekt repräsentiert das HTML-DOM.

  • Jsoup - Hauptklasse zum Parsen des angegebenen HTML-Strings.

  • html - HTML-Fragment-String.

  • body - stellt untergeordnete Elementelemente des Body-Elements des Dokuments dar und entspricht document.getElementsByTag ("body").

Beschreibung

Die Methode parseBodyFragment (String html) analysiert den eingegebenen HTML-Code in ein neues Dokument. Dieses Dokumentobjekt kann verwendet werden, um Details des HTML-Body-Fragments zu durchlaufen und abzurufen.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupTester {
   public static void main(String[] args) {
   
      String html = "<div><p>Sample Content</p>";
      Document document = Jsoup.parseBodyFragment(html);
      Element body = document.body();
      Elements paragraphs = body.getElementsByTag("p");
      for (Element paragraph : paragraphs) {
         System.out.println(paragraph.text());
      }
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Sample Content

Das folgende Beispiel zeigt das Abrufen eines HTML-Codes aus dem Web mithilfe einer URL und das Auffinden seiner Daten.

Syntax

String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();

Wo

  • document - Das Dokumentobjekt repräsentiert das HTML-DOM.

  • Jsoup - Hauptklasse, um die URL zu verbinden und den HTML-String zu erhalten.

  • url - URL der zu ladenden HTML-Seite.

Beschreibung

Die Methode connect (url) stellt eine Verbindung zur URL her und die Methode get () gibt den HTML-Code der angeforderten URL zurück.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class JsoupTester {
   public static void main(String[] args) throws IOException {
   
      String url = "http://www.google.com";
      Document document = Jsoup.connect(url).get();
      System.out.println(document.title());
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Google

Das folgende Beispiel zeigt das Abrufen eines HTML-Codes von der Festplatte mithilfe einer Datei und das Auffinden der Daten.

Syntax

String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();

Wo

  • document - Das Dokumentobjekt repräsentiert das HTML-DOM.

  • Jsoup - Hauptklasse, um die URL zu verbinden und den HTML-String zu erhalten.

  • url - URL der zu ladenden HTML-Seite.

Beschreibung

Die Methode connect (url) stellt eine Verbindung zur URL her und die Methode get () gibt den HTML-Code der angeforderten URL zurück.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class JsoupTester {
   public static void main(String[] args) throws IOException, URISyntaxException {
      
      URL path = ClassLoader.getSystemResource("test.htm");
      File input = new File(path.toURI());
      Document document = Jsoup.parse(input, "UTF-8");
      System.out.println(document.title());
   }
}

test.htm

Erstellen Sie die folgende Datei test.htm im Ordner C: \ jsoup.

<html>
   <head>
      <title>Sample Title</title>
   </head>
   <body>
      <p>Sample Content</p>
   </body>
</html>

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Sample Title

Das folgende Beispiel zeigt die Verwendung von DOM-ähnlichen Methoden nach dem Parsen eines HTML-Strings in ein Dokumentobjekt.

Syntax

Document document = Jsoup.parse(html);
Element sampleDiv = document.getElementById("sampleDiv");
Elements links = sampleDiv.getElementsByTag("a");

Wo

  • document - Das Dokumentobjekt repräsentiert das HTML-DOM.

  • Jsoup - Hauptklasse zum Parsen des angegebenen HTML-Strings.

  • html - HTML-Zeichenfolge.

  • sampleDiv - Das Elementobjekt repräsentiert das HTML-Knotenelement, das durch die ID "sampleDiv" gekennzeichnet ist.

  • links - Das Elementobjekt repräsentiert die mehreren Knotenelemente, die durch das Tag "a" gekennzeichnet sind.

Beschreibung

Die Methode parse (String html) analysiert den eingegebenen HTML-Code in ein neues Dokument. Dieses Dokumentobjekt kann zum Durchlaufen und Abrufen von Details des HTML-Doms verwendet werden.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupTester {
   public static void main(String[] args) {
   
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<p>Sample Content</p>"
         + "<div id='sampleDiv'><a href='www.google.com'>Google</a></div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);
      System.out.println(document.title());
      Elements paragraphs = document.getElementsByTag("p");
      for (Element paragraph : paragraphs) {
         System.out.println(paragraph.text());
      }

      Element sampleDiv = document.getElementById("sampleDiv");
      System.out.println("Data: " + sampleDiv.text());
      Elements links = sampleDiv.getElementsByTag("a");

      for (Element link : links) {
         System.out.println("Href: " + link.attr("href"));
         System.out.println("Text: " + link.text());
      }
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Sample Title
Sample Content
Data: Google
Href: www.google.com
Text: Google

Das folgende Beispiel zeigt die Verwendung von Auswahlmethoden nach dem Parsen einer HTML-Zeichenfolge in ein Dokumentobjekt. jsoup unterstützt Selektoren ähnlich wie CSS-Selektoren.

Syntax

Document document = Jsoup.parse(html);
Element sampleDiv = document.getElementById("sampleDiv");
Elements links = sampleDiv.getElementsByTag("a");

Wo

  • document - Das Dokumentobjekt repräsentiert das HTML-DOM.

  • Jsoup - Hauptklasse zum Parsen des angegebenen HTML-Strings.

  • html - HTML-Zeichenfolge.

  • sampleDiv - Das Elementobjekt repräsentiert das HTML-Knotenelement, das durch die ID "sampleDiv" gekennzeichnet ist.

  • links - Das Elementobjekt repräsentiert die mehreren Knotenelemente, die durch das Tag "a" gekennzeichnet sind.

Beschreibung

Die Methode document.select (Ausdruck) analysiert den angegebenen CSS-Selektorausdruck, um ein HTML-Dom-Element auszuwählen.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupTester {
   public static void main(String[] args) {
   
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<p>Sample Content</p>"
         + "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
         + "<h3><a>Sample</a><h3>"
         +"</div>"
         + "<div id='imageDiv' class='header'><img name='google' src='google.png' />"
         + "<img name='yahoo' src='yahoo.jpg' />"
         +"</div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);

      //a with href
      Elements links = document.select("a[href]");

      for (Element link : links) {
         System.out.println("Href: " + link.attr("href"));
         System.out.println("Text: " + link.text());
      }

      // img with src ending .png
      Elements pngs = document.select("img[src$=.png]");

      for (Element png : pngs) {
         System.out.println("Name: " + png.attr("name"));
      }

      // div with class=header
      Element headerDiv = document.select("div.header").first();
      System.out.println("Id: " + headerDiv.id());
   
      // direct a after h3
      Elements sampleLinks = document.select("h3 > a"); 

      for (Element link : sampleLinks) {
         System.out.println("Text: " + link.text());
      }
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Href: www.google.com
Text: Google
Name: google
Id: imageDiv
Text: Sample

Das folgende Beispiel zeigt die Verwendung der Methode zum Abrufen des Attributs eines dom-Elements nach dem Parsen eines HTML-Strings in ein Document-Objekt.

Syntax

Document document = Jsoup.parse(html);
Element link = document.select("a").first();
System.out.println("Href: " + link.attr("href"));

Wo

  • document - Das Dokumentobjekt repräsentiert das HTML-DOM.

  • Jsoup - Hauptklasse zum Parsen des angegebenen HTML-Strings.

  • html - HTML-Zeichenfolge.

  • link - Das Elementobjekt repräsentiert das HTML-Knotenelement, das das Ankertag darstellt.

  • link.attr() - Die Methode attr (attribute) ruft das Elementattribut ab.

Beschreibung

Das Elementobjekt stellt ein Dom-Element dar und bietet verschiedene Methoden, um das Attribut eines Dom-Elements abzurufen.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupTester {
   public static void main(String[] args) {
   
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<p>Sample Content</p>"
         + "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
         + "<h3><a>Sample</a><h3>"
         +"</div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);

      //a with href
      Element link = document.select("a").first();         

      System.out.println("Href: " + link.attr("href"));
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Href: www.google.com

Das folgende Beispiel zeigt die Verwendung von Methoden zum Abrufen von Text nach dem Parsen eines HTML-Strings in ein Dokumentobjekt.

Syntax

Document document = Jsoup.parse(html);
Element link = document.select("a").first();     
System.out.println("Text: " + link.text());

Wo

  • document - Das Dokumentobjekt repräsentiert das HTML-DOM.

  • Jsoup - Hauptklasse zum Parsen des angegebenen HTML-Strings.

  • html - HTML-Zeichenfolge.

  • link - Das Elementobjekt repräsentiert das HTML-Knotenelement, das das Ankertag darstellt.

  • link.text() - Die Methode text () ruft den Elementtext ab.

Beschreibung

Das Elementobjekt stellt ein Dom-Element dar und bietet verschiedene Methoden, um den Text eines Dom-Elements abzurufen.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupTester {
   public static void main(String[] args) {
   
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<p>Sample Content</p>"
         + "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
         + "<h3><a>Sample</a><h3>"
         +"</div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);

      //a with href
      Element link = document.select("a").first();         

      System.out.println("Text: " + link.text());
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Text: Google

Das folgende Beispiel zeigt die Verwendung von Methoden zum Abrufen von innerem und äußerem HTML nach dem Parsen eines HTML-Strings in ein Dokumentobjekt.

Syntax

Document document = Jsoup.parse(html);
Element link = document.select("a").first();         

System.out.println("Outer HTML: " + link.outerHtml());
System.out.println("Inner HTML: " + link.html());

Wo

  • document - Das Dokumentobjekt repräsentiert das HTML-DOM.

  • Jsoup - Hauptklasse zum Parsen des angegebenen HTML-Strings.

  • html - HTML-Zeichenfolge.

  • link - Das Elementobjekt repräsentiert das HTML-Knotenelement, das das Ankertag darstellt.

  • link.outerHtml() - Die OuterHtml () -Methode ruft das vollständige HTML-Element ab.

  • link.html() - Die Methode html () ruft das Element inner html ab.

Beschreibung

Das Elementobjekt stellt ein Dom-Element dar und bietet verschiedene Methoden zum Abrufen des HTML-Codes eines Dom-Elements.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupTester {
   public static void main(String[] args) {
   
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<p>Sample Content</p>"
         + "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
         + "<h3><a>Sample</a><h3>"
         +"</div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);

      //a with href
      Element link = document.select("a").first();         

      System.out.println("Outer HTML: " + link.outerHtml());
      System.out.println("Inner HTML: " + link.html());
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Outer HTML: <a href="www.google.com">Google</a>
Inner HTML: Google

Das folgende Beispiel zeigt Methoden, die sowohl relative als auch absolute URLs auf der HTML-Seite bereitstellen können.

Syntax

String url = "http://www.tutorialspoint.com/";
Document document = Jsoup.connect(url).get();
Element link = document.select("a").first();         

System.out.println("Relative Link: " + link.attr("href"));
System.out.println("Absolute Link: " + link.attr("abs:href"));
System.out.println("Absolute Link: " + link.absUrl("href"));

Wo

  • document - Das Dokumentobjekt repräsentiert das HTML-DOM.

  • Jsoup - Hauptklasse, um eine Verbindung zu einer URL herzustellen und den HTML-Inhalt abzurufen.

  • link - Das Elementobjekt repräsentiert das HTML-Knotenelement, das das Ankertag darstellt.

  • link.attr("href")- liefert den Wert von href, der im Ankertag vorhanden ist. Es kann relativ oder absolut sein.

  • link.attr("abs:href") - liefert die absolute URL nach dem Auflösen anhand des Basis-URI des Dokuments.

  • link.absUrl("href") - liefert die absolute URL nach dem Auflösen anhand des Basis-URI des Dokuments.

Beschreibung

Das Elementobjekt stellt eine Domäne dar und bietet Methoden, um sowohl relative als auch absolute URLs abzurufen, die auf der HTML-Seite vorhanden sind.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupTester {
   public static void main(String[] args) throws IOException {
   
      String url = "http://www.tutorialspoint.com/";
      Document document = Jsoup.connect(url).get();

      Element link = document.select("a").first();
      System.out.println("Relative Link: " + link.attr("href"));
      System.out.println("Absolute Link: " + link.attr("abs:href"));
      System.out.println("Absolute Link: " + link.absUrl("href"));
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Relative Link: index.htm
Absolute Link: https://www.tutorialspoint.com/index.htm
Absolute Link: https://www.tutorialspoint.com/index.htm

Das folgende Beispiel zeigt die Verwendung einer Methode zum Festlegen von Attributen eines dom-Elements, Massenaktualisierungen und Hinzufügen / Entfernen von Klassenmethoden nach dem Parsen eines HTML-Strings in ein Document-Objekt.

Syntax

Document document = Jsoup.parse(html);
Element link = document.select("a").first();         
link.attr("href","www.yahoo.com");     
link.addClass("header"); 
link.removeClass("header");

Wo

  • document - Das Dokumentobjekt repräsentiert das HTML-DOM.

  • Jsoup - Hauptklasse zum Parsen des angegebenen HTML-Strings.

  • html - HTML-Zeichenfolge.

  • link - Das Elementobjekt repräsentiert das HTML-Knotenelement, das das Ankertag darstellt.

  • link.attr() - Die Methode attr (Attribut, Wert) setzt dem Elementattribut den entsprechenden Wert.

  • link.addClass() - Die Methode addClass (class) fügt die Klasse unter dem Klassenattribut hinzu.

  • link.removeClass() - Die Methode removeClass (class) entfernt die Klasse unter dem Klassenattribut.

Beschreibung

Das Elementobjekt stellt ein Dom-Element dar und bietet verschiedene Methoden, um das Attribut eines Dom-Elements abzurufen.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupTester {
   public static void main(String[] args) {
   
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<p>Sample Content</p>"
         + "<div id='sampleDiv'><a id='googleA' href='www.google.com'>Google</a></div>"
         + "<div class='comments'><a href='www.sample1.com'>Sample1</a>"
         + "<a href='www.sample2.com'>Sample2</a>"
         + "<a href='www.sample3.com'>Sample3</a><div>"
         +"</div>"
         + "<div id='imageDiv' class='header'><img name='google' src='google.png' />"
         + "<img name='yahoo' src='yahoo.jpg' />"
         +"</div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);

      //Example: set attribute
      Element link = document.getElementById("googleA");
      System.out.println("Outer HTML Before Modification :"  + link.outerHtml());
      link.attr("href","www.yahoo.com");      
      System.out.println("Outer HTML After Modification :"  + link.outerHtml());
      System.out.println("---");
      
      //Example: add class
      Element div = document.getElementById("sampleDiv");
      System.out.println("Outer HTML Before Modification :"  + div.outerHtml());
      link.addClass("header");      
      System.out.println("Outer HTML After Modification :"  + div.outerHtml());
      System.out.println("---");
      
      //Example: remove class
      Element div1 = document.getElementById("imageDiv");
      System.out.println("Outer HTML Before Modification :"  + div1.outerHtml());
      div1.removeClass("header");      
      System.out.println("Outer HTML After Modification :"  + div1.outerHtml());
      System.out.println("---");
      
      //Example: bulk update
      Elements links = document.select("div.comments a");
      System.out.println("Outer HTML Before Modification :"  + links.outerHtml());
      links.attr("rel", "nofollow");
      System.out.println("Outer HTML Before Modification :"  + links.outerHtml());
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Outer HTML Before Modification :<a id="googleA" href="www.google.com">Google</a>
Outer HTML After Modification :<a id="googleA" href="www.yahoo.com">Google</a>
---
Outer HTML Before Modification :<div id="sampleDiv">
 <a id="googleA" href="www.yahoo.com">Google</a>
</div>
Outer HTML After Modification :<div id="sampleDiv">
 <a id="googleA" href="www.yahoo.com" class="header">Google</a>
</div>
---
Outer HTML Before Modification :<div id="imageDiv" class="header">
 <img name="google" src="google.png">
 <img name="yahoo" src="yahoo.jpg">
</div>
Outer HTML After Modification :<div id="imageDiv" class="">
 <img name="google" src="google.png">
 <img name="yahoo" src="yahoo.jpg">
</div>
---
Outer HTML Before Modification :<a href="www.sample1.com">Sample1</a>
<a href="www.sample2.com">Sample2</a>
<a href="www.sample3.com">Sample3</a>
Outer HTML Before Modification :<a href="www.sample1.com" rel="nofollow">Sample1</a>
<a href="www.sample2.com" rel="nofollow">Sample2</a>
<a href="www.sample3.com" rel="nofollow">Sample3</a>

Das folgende Beispiel zeigt die Verwendung einer Methode zum Festlegen, Voranstellen oder Anhängen von HTML an ein dom-Element nach dem Parsen eines HTML-Strings in ein Document-Objekt.

Syntax

Document document = Jsoup.parse(html);
Element div = document.getElementById("sampleDiv");     
div.html("<p>This is a sample content.</p>");   
div.prepend("<p>Initial Text</p>");
div.append("<p>End Text</p>");

Wo

  • document - Das Dokumentobjekt repräsentiert das HTML-DOM.

  • Jsoup - Hauptklasse zum Parsen des angegebenen HTML-Strings.

  • html - HTML-Zeichenfolge.

  • div - Das Elementobjekt repräsentiert das HTML-Knotenelement, das das Ankertag darstellt.

  • div.html() - Die HTML-Methode (Inhalt) ersetzt das äußere HTML des Elements durch den entsprechenden Wert.

  • div.prepend() - Die Methode prepend (content) fügt den Inhalt vor dem äußeren HTML-Code hinzu.

  • div.append() - Die Methode append (content) fügt den Inhalt nach dem äußeren HTML-Code hinzu.

Beschreibung

Das Elementobjekt stellt ein Dom-Element dar und bietet verschiedene Methoden zum Festlegen, Voranstellen oder Anhängen von HTML an ein Dom-Element.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupTester {
   public static void main(String[] args) {
   
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<div id='sampleDiv'><a id='googleA' href='www.google.com'>Google</a></div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);

      Element div = document.getElementById("sampleDiv");
      System.out.println("Outer HTML Before Modification :\n"  + div.outerHtml());
      div.html("<p>This is a sample content.</p>");
      System.out.println("Outer HTML After Modification :\n"  + div.outerHtml());
      div.prepend("<p>Initial Text</p>");
      System.out.println("After Prepend :\n"  + div.outerHtml());
      div.append("<p>End Text</p>");
      System.out.println("After Append :\n"  + div.outerHtml());          
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Outer HTML Before Modification :
<div id="sampleDiv">
 <a id="googleA" href="www.google.com">Google</a>
</div>
Outer HTML After Modification :
<div id="sampleDiv">
 <p>This is a sample content.</p>
</div>
After Prepend :
<div id="sampleDiv">
 <p>Initial Text</p>
 <p>This is a sample content.</p>
</div>
After Append :
<div id="sampleDiv">
 <p>Initial Text</p>
 <p>This is a sample content.</p>
 <p>End Text</p>
</div>
Outer HTML Before Modification :
<span>Sample Content</span>
Outer HTML After Modification :
<span>Sample Content</span>

Das folgende Beispiel zeigt die Verwendung einer Methode zum Festlegen, Voranstellen oder Anhängen von Text an ein dom-Element nach dem Parsen einer HTML-Zeichenfolge in ein Dokumentobjekt.

Syntax

Document document = Jsoup.parse(html);
Element div = document.getElementById("sampleDiv");     
div.text("This is a sample content.");   
div.prepend("Initial Text.");
div.append("End Text.");

Wo

  • document - Das Dokumentobjekt repräsentiert das HTML-DOM.

  • Jsoup - Hauptklasse zum Parsen des angegebenen HTML-Strings.

  • html - HTML-Zeichenfolge.

  • div - Das Elementobjekt repräsentiert das HTML-Knotenelement, das das Ankertag darstellt.

  • div.text() - Die Textmethode (Inhalt) ersetzt den Inhalt des Elements durch den entsprechenden Wert.

  • div.prepend() - Die Methode prepend (content) fügt den Inhalt vor dem äußeren HTML-Code hinzu.

  • div.append() - Die Methode append (content) fügt den Inhalt nach dem äußeren HTML-Code hinzu.

Beschreibung

Das Elementobjekt stellt ein Dom-Element dar und bietet verschiedene Methoden zum Festlegen, Voranstellen oder Anhängen von HTML an ein Dom-Element.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupTester {
   public static void main(String[] args) {

      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<div id='sampleDiv'><a id='googleA' href='www.google.com'>Google</a></div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);

      Element div = document.getElementById("sampleDiv");
      System.out.println("Outer HTML Before Modification :\n"  + div.outerHtml());
      div.text(This is a sample content.");
      System.out.println("Outer HTML After Modification :\n"  + div.outerHtml());
      div.prepend("Initial Text.");
      System.out.println("After Prepend :\n"  + div.outerHtml());
      div.append("End Text.");
      System.out.println("After Append :\n"  + div.outerHtml());
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Outer HTML Before Modification :
<div id="sampleDiv">
 <a id="googleA" href="www.google.com">Google</a>
</div>
Outer HTML After Modification :
<div id="sampleDiv">
 This is a sample content.
</div>
After Prepend :
<div id="sampleDiv">
 Initial Text.This is a sample content.
</div>
After Append :
<div id="sampleDiv">
 Initial Text.This is a sample content.End Text.
</div>

Das folgende Beispiel zeigt die Verhinderung von XSS-Angriffen oder Cross-Site-Scripting-Angriffen.

Syntax

String safeHtml =  Jsoup.clean(html, Whitelist.basic());

Wo

  • Jsoup - Hauptklasse zum Parsen des angegebenen HTML-Strings.

  • html - Anfänglicher HTML-String.

  • safeHtml - Bereinigtes HTML.

  • Whitelist - Objekt zur Bereitstellung von Standardkonfigurationen zum Schutz von HTML.

  • clean() - Bereinigt den HTML-Code mithilfe der Whitelist.

Beschreibung

Das Jsoup-Objekt bereinigt ein HTML mithilfe von Whitelist-Konfigurationen.

Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in C: /> jsoup.

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;

public class JsoupTester {
   public static void main(String[] args) {

      String html = "<p><a href='http://example.com/'"
         +" onclick='checkData()'>Link</a></p>";

      System.out.println("Initial HTML: " + html);
      String safeHtml =  Jsoup.clean(html, Whitelist.basic());

      System.out.println("Cleaned HTML: " +safeHtml);
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt:

C:\jsoup>javac JsoupTester.java

Führen Sie nun den JsoupTester aus, um das Ergebnis anzuzeigen.

C:\jsoup>java JsoupTester

Siehe das Ergebnis.

Initial HTML: <p><a href='http://example.com/' onclick='checkData()'>Link</a></p>
Cleaned HTML: <p><a href="http://example.com/" rel="nofollow">Link</a></p>