Maison > Java > javaDidacticiel > Comment puis-je accéder au contenu généré par JavaScript avec JSoup ?

Comment puis-je accéder au contenu généré par JavaScript avec JSoup ?

Susan Sarandon
Libérer: 2024-12-06 06:38:12
original
664 Les gens l'ont consulté

How Can I Access JavaScript-Generated Content with JSoup?

JSoup et contenu généré par JavaScript

Lors de l'analyse de pages Web avec JSoup, il est important de se rappeler que JSoup est un analyseur HTML, pas un moteur de navigateur. Cela signifie qu'il n'exécute pas JavaScript et que tout contenu ajouté dynamiquement à la page après le chargement initial de la page est invisible pour JSoup.

Par exemple, si vous devez analyser une page qui ajoute dynamiquement des balises à un div utilisant JavaScript, JSoup ne pourra pas capturer ce contenu. L'élément lui-même peut être présent dans le code source HTML, mais les balises ajoutées par JavaScript ne seront pas disponibles pour JSoup.

Accès au contenu généré par JavaScript

Pour y accéder contenu ajouté à la page par JavaScript, vous devez utiliser un outil capable d'émuler un environnement de navigateur. Il existe plusieurs bibliothèques Java qui peuvent faire cela, comme comme :

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

Ces les bibliothèques vous permettent de créer une instance de navigateur virtuel et d'interagir avec la page Web comme si elle était affichée dans un vrai navigateur. Cela vous permet d'exécuter JavaScript, de déclencher des événements et d'accéder au contenu ajouté dynamiquement.

Exemple d'utilisation de Selenium

Voici un exemple d'utilisation de Selenium pour obtenir le contenu généré par JavaScript. à partir de la page que vous avez référencée :

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();
    }
}
Copier après la connexion

Cet exemple utilise Selenium pour charger la page Web, attendez le fichier généré par JavaScript contenu à ajouter, puis récupérez les balises de l'élément div.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal