首頁 > Java > java教程 > 如何使用 JSoup 存取 JavaScript 產生的內容?

如何使用 JSoup 存取 JavaScript 產生的內容?

Susan Sarandon
發布: 2024-12-06 06:38:12
原創
660 人瀏覽過

How Can I Access JavaScript-Generated Content with JSoup?

JSoup 和JavaScript 產生的內容

使用JSoup 解析網頁時,重要的是要記住JSoup 是一個HTML 解析器,而不是一個HTML 解析器。瀏覽器引擎。這意味著它不執行 JavaScript,並且在初始頁面加載後動態添加到頁面的任何內容對於 JSoup 都是不可見的。

例如,如果您需要解析一個動態新增標籤的頁面div 元素使用 JavaScript,JSoup 將無法擷取該內容。元素本身可能存在於 HTML 原始碼中,但 JavaScript 新增的標籤將無法用於 JSoup。

存取 JavaScript 產生的內容

存取如果要透過 JavaScript 新增至頁面的內容,則需要使用可以模擬瀏覽器環境的工具。有幾個Java 函式庫可以做到這一點,例如如:

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

這些庫可讓您建立虛擬瀏覽器實例並與網頁交互,

這些庫可讓您建立虛擬瀏覽器實例並與網頁交互,就像在真實瀏覽器中呈現一樣。這使您能夠執行 JavaScript、觸發事件並存取動態添加的內容。

使用Selenium 的範例

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();
    }
}
登入後複製
這裡是一個使用Selenium 取得JavaScript 產生的內容的範例從您引用的頁面:

此範例使用Selenium 載入網頁,等待要新增的JavaScript 產生的內容,然後從div 元素中檢索標籤。

以上是如何使用 JSoup 存取 JavaScript 產生的內容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板