JSoup 和JavaScript 產生的內容
使用JSoup 解析網頁時,重要的是要記住JSoup 是一個HTML 解析器,而不是一個HTML 解析器。瀏覽器引擎。這意味著它不執行 JavaScript,並且在初始頁面加載後動態添加到頁面的任何內容對於 JSoup 都是不可見的。
例如,如果您需要解析一個動態新增標籤的頁面div 元素使用 JavaScript,JSoup 將無法擷取該內容。元素本身可能存在於 HTML 原始碼中,但 JavaScript 新增的標籤將無法用於 JSoup。
存取 JavaScript 產生的內容
存取如果要透過 JavaScript 新增至頁面的內容,則需要使用可以模擬瀏覽器環境的工具。有幾個Java 函式庫可以做到這一點,例如如:
這些庫可讓您建立虛擬瀏覽器實例並與網頁交互,
這些庫可讓您建立虛擬瀏覽器實例並與網頁交互,就像在真實瀏覽器中呈現一樣。這使您能夠執行 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(); } }
以上是如何使用 JSoup 存取 JavaScript 產生的內容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!