htmlunit helloWorld实现
htmlunit简介
htmlunit 是一款开源的java 页面分析工具,读取页面后使用htmlunit分析页面上的内容。
项目可以模拟浏览器运行,被誉为java浏览器的开源实现。是一个没有界面的浏览器,运行速度迅速。
是junit的扩展之一,采用的是Rhinojs引擎,模拟js运行
常规意义上,该项目可以用来进行页面的测试工作,实现网页自动化测试,(包括JS)。但是一般来说,在小型爬虫项目中,这种框架十分常用,可以有效的分析出 dom的标签,并且有效的运行页面上的js以便得到一些需要执行JS才能得到的值。我们研究的爬虫应用中 仅仅用Httpclient+jsoup是不够的,因为有些页面数据是js加载出来的 httpclient解析不出来,比如百度云用户页面,淘宝页面,连开源中国博客的博客内容都是Js加载或者处理的,所以httpClient是解析不出来的,这里htmlunit就是一个很好的方案,内嵌js浏览器,模拟Js运行,把结果执行出来。这个就是我们想要的。
所以搞爬虫,htmlunit必须要掌握好;
htmlunit helloWorld实现
建一个Maven普通客户端项目
pom.xml引入htmlunit支持:
1
2
3
4
5
|
< dependency >
< groupId >net.sourceforge.htmlunit</ groupId >
< artifactId >htmlunit</ artifactId >
< version >2.26</ version >
</ dependency >
|
写一个测试类,来解析www.java1234.com 获取网页html以及网页文本,这里有点类似httpClient,但是底层执行过程默认多了一个js执行过程(当然htmlunit提供了关闭js解析设置);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
package com.open1111; import java.io.IOException; import java.net.MalformedURLException; import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlPage; public class HtmlUnitTest { public static void main(String[] args) {
WebClient webClient=new WebClient(); // 实例化Web客户端
try {
HtmlPage page=webClient.getPage("http://www.java1234.com") ; // 解析获取页面
System.out.println("网页html:"+ page.asXml() ); // 获取Html
System.out.println("====================");
System.out.println("网页文本:"+ page.asText() ); // 获取文本
} catch (FailingHttpStatusCodeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
webClient.close() ; // 关闭客户端,释放内存
}
}
} |
运行输出: