JSoup 是一个 Java 库,用于解析和操作 HTML 文档。它可以方便地从网页中提取数据,并且支持 DOM 操作、CSS 选择器等功能。然而,JSoup 本身并不执行 JavaScript,因此无法直接获取通过 JavaScript 动态生成或隐藏的内容。
使用 JSoup 获取被 onclick
按钮 JavaScript 隐藏的表的内容。
JSoup 无法执行 JavaScript,因此无法处理通过 JavaScript 动态生成或隐藏的内容。
为了获取通过 JavaScript 隐藏的内容,可以使用以下几种方法:
以下是使用 Selenium 和 JSoup 结合的示例代码:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class HiddenContentExtractor {
public static void main(String[] args) {
// 设置 ChromeDriver 路径
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
// 创建无头浏览器实例
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
WebDriver driver = new ChromeDriver(options);
try {
// 打开目标网页
driver.get("http://example.com");
// 模拟点击按钮
WebElement button = driver.findElement(By.cssSelector("button[onclick='hideTable()']"));
button.click();
// 获取渲染后的 HTML 内容
String html = driver.getPageSource();
// 使用 JSoup 解析 HTML
Document doc = Jsoup.parse(html);
// 提取隐藏的表格内容
String tableContent = doc.select("#hiddenTable").html();
System.out.println(tableContent);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭浏览器
driver.quit();
}
}
}
webdriver.chrome.driver
的路径正确。通过上述方法,可以有效地获取通过 JavaScript 隐藏的表的内容。
div" onclick="hideFn()"> 按钮显示div" onclick="showFn()"> 按钮切换div显示和隐藏" onclick="toggleFn()">
领取专属 10元无门槛券
手把手带您无忧上云