一、序言

很久没更新博客,最近由于开发需求又将之前很久不用的抓取捡起来了

发现只是单纯的httpclient获取一些页面得不到想要的数据

虽然我们可以通过研究拿到JS执行的请求路径再用java代码获取我们需要的这部分数据,且不说我们能不能够从JS脚本中分析到这个请求路径和请求参数,光是分析这部分源码的代价就已经很高了,在我分析了一段时间后放弃了

于是使用了htmlunit模拟浏览器操作来获取页面js渲染的数据

HtmlUnit是一个用java编写的无界面浏览器,建模html文档,通过API调用页面,填充表单,点击链接等等。如同正常浏览器一样操作。典型应用于测试以及从网页抓取信息。

二、引入pom依赖

<dependency>
			<groupId>net.sourceforge.htmlunit</groupId>
			 <artifactId>htmlunit</artifactId>
				<version>2.37.0</version> 
		</dependency>

三、简单使用

http://htmlunit.sourceforge/

这是htmlutil的官网,有问题可以看看

1、定义WebClient

webClient = new WebClient();

2、获取页面

HtmlPage page = webClient.getPage("想要获取的页面url");

3、从页面中获取元素

DomNodeList<DomElement> elements = page.g

更多推荐

Java利用HtmlUtil获取页面ajax渲染数据