JSoup 和 JavaScript 生成的内容
使用 JSoup 解析网页时,重要的是要记住 JSoup 是一个 HTML 解析器,而不是一个 HTML 解析器。浏览器引擎。这意味着它不执行 JavaScript,并且在初始页面加载后动态添加到页面的任何内容对于 JSoup 都是不可见的。
例如,如果您需要解析一个动态添加标签的页面div 元素使用 JavaScript,JSoup 将无法捕获该内容。元素本身可能存在于 HTML 源代码中,但 JavaScript 添加的标签将无法用于 JSoup。
访问 JavaScript 生成的内容
访问如果要通过 JavaScript 添加到页面的内容,则需要使用可以模拟浏览器环境的工具。有几个 Java 库可以做到这一点,例如如:
这些库允许您创建虚拟浏览器实例并与网页交互,就像在真实浏览器中呈现一样。这使您能够执行 JavaScript、触发事件并访问动态添加的内容。
使用 Selenium 的示例
这里是一个使用 Selenium 获取 JavaScript 生成的内容的示例从您引用的页面:
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 生成的内容,然后从 div 元素中检索标签。
以上是如何使用 JSoup 访问 JavaScript 生成的内容?的详细内容。更多信息请关注PHP中文网其他相关文章!