htmlunit抓取动态网页(Java环境下的一下配置实现思路 )
优采云 发布时间: 2022-03-08 14:17htmlunit抓取动态网页(Java环境下的一下配置实现思路
)
爬取网页数据时,传统的jsoup方案只能对静态页面有效,而一些网页数据往往是由js生成的,此时就需要其他的方案了。
第一个思路是分析js程序,再次爬取js请求,适合爬取特定页面,但要实现不同目标url的通用性比较麻烦。
第二种思路,也比较成熟,就是使用第三方驱动渲染页面,然后下载。这是第二个实现思路。
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();
}