htmlunit抓取动态网页(Java环境下的一下配置实现思路介绍-苏州安嘉 )
优采云 发布时间: 2022-01-01 07:03htmlunit抓取动态网页(Java环境下的一下配置实现思路介绍-苏州安嘉
)
在抓取网页数据时,传统的jsoup方案只能对静态页面有效,而且部分网页数据往往是js生成的,所以此时需要其他方案。
第一个思路是分析js程序,重新获取js请求。这适用于特定的页面获取。实现不同目标网址的通用性比较麻烦。
第二种想法,也是一种更成熟的方法,是使用第三方驱动程序来呈现页面,然后下载它。下面是第二种实现思路。
Selenium 是一种模拟浏览器的自动化测试工具。它提供了一组 API 来与真正的浏览器内核进行交互。
Java环境中的maven配置如下:
org.seleniumhq.selenium
selenium-java
2.46.0
第三方驱动主要有IEDriver、FirefoxDriver、ChromeDriver、HtmlUnitDriver。
htmlUnit 也是自动化测试的工具。您可以使用 HtmlUnit 来模拟浏览器操作并获取执行的 html 页面。其中HtmlUnitDriver是对htmlUnit的封装。
由于htmlunit对js解析的支持有限,所以在实际项目中并不常用。
以chrome为例下载对应的驱动:
下载驱动时需要注意与selenium版本的兼容性。可能会出现异常情况。一般下载最新版本。
运行程序前一定要指定驱动位置,比如Windows下
System.getProperties().setProperty("webdriver.chrome.driver",
"D:\\chromedriver\\chromedriver.exe");
获取整个页面
public static void testChromeDriver() {
System.getProperties().setProperty("webdriver.chrome.driver",
"D:\\chromedriver\\chromedriver.exe");
WebDriver webDriver = new ChromeDriver();
webDriver.get("http://picture.youth.cn/qtdb/201506/t20150625_6789707.htm");
String responseBody = webDriver.getPageSource();
System.out.println(responseBody);
webDriver.close();
}