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 :
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(); } }
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!