Heim > Java > javaLernprogramm > Wie kann ich mit JSoup auf JavaScript-generierte Inhalte zugreifen?

Wie kann ich mit JSoup auf JavaScript-generierte Inhalte zugreifen?

Susan Sarandon
Freigeben: 2024-12-06 06:38:12
Original
659 Leute haben es durchsucht

How Can I Access JavaScript-Generated Content with JSoup?

JSoup und JavaScript-generierte Inhalte

Beim Parsen von Webseiten mit JSoup ist es wichtig zu bedenken, dass JSoup ein HTML-Parser und kein HTML-Parser ist Browser-Engine. Dies bedeutet, dass kein JavaScript ausgeführt wird und alle Inhalte, die der Seite nach dem ersten Laden der Seite dynamisch hinzugefügt werden, für JSoup unsichtbar sind.

Zum Beispiel, wenn Sie eine Seite analysieren müssen, die dynamisch Tags zu einem hinzufügt Wenn Sie ein div-Element mit JavaScript verwenden, kann JSoup diesen Inhalt nicht erfassen. Das Element selbst ist möglicherweise im HTML-Quellcode vorhanden, aber die von JavaScript hinzugefügten Tags stehen JSoup nicht zur Verfügung.

Zugriff auf von JavaScript generierte Inhalte

Zugriff Für Inhalte, die per JavaScript zur Seite hinzugefügt werden, müssen Sie ein Tool verwenden, das eine Browserumgebung emulieren kann. Es gibt mehrere Java-Bibliotheken, die dies tun können, z als:

  • [Selen](https://www.selenium.dev/)
  • [HtmlUnit](https://htmlunit.sourcefor ge.io/)
  • [JBrowserDriver](https://github.com/JBrowserDriver/JBrowserDriver)

Diese Mit Bibliotheken können Sie eine virtuelle Browserinstanz erstellen und mit der Webseite interagieren, als ob sie in einem echten Browser gerendert würde. Dadurch können Sie JavaScript ausführen, Ereignisse auslösen und auf den dynamisch hinzugefügten Inhalt zugreifen.

Beispiel für die Verwendung von Selenium

Hier ist ein Beispiel für die Verwendung von Selenium, um den von JavaScript generierten Inhalt abzurufen von der Seite, auf die Sie verwiesen haben:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumExample {
    public static void main(String[] args) {
        // Set up the WebDriver
        System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
        WebDriver driver = new ChromeDriver();

        // Load the web page
        driver.get("http://www.bestreferat.ru/referat-32558.html");

        // Wait for the div element to be filled with JavaScript
        WebElement tagsList = driver.findElement(By.id("tags_list"));
        WebDriverWait wait = new WebDriverWait(driver, 10);
        wait.until(ExpectedConditions.visibilityOf(tagsList));

        // Get the tags from the div element
        List<WebElement> tags = tagsList.findElements(By.tagName("a"));

        // Print the tags
        for (WebElement tag : tags) {
            System.out.println(tag.getText());
        }

        // Close the WebDriver
        driver.close();
    }
}
Nach dem Login kopieren

In diesem Beispiel wird Selenium zum Laden der Webseite verwendet. Warten Sie auf die JavaScript-Generierung Fügen Sie den hinzuzufügenden Inhalt hinzu und rufen Sie dann die Tags aus dem div-Element ab.

Das obige ist der detaillierte Inhalt vonWie kann ich mit JSoup auf JavaScript-generierte Inhalte zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage