HtmlUnit是一款java的无界面浏览器程序库。它模拟HTML文档,并提供相应的API,允许您调用页面,填写表单,点击链接等操作,就像您在“正常”浏览器中做的一样。它有相当不错的JavaScript支持(还在不断改进),甚至能够处理相当复杂的AJAX库,模拟Chrome,Firefox或Internet Explorer取决于使用的配置。它通常用于测试目的或从网站检索信息。
HtmlUnit不是一个通用的单元测试框架。它是一种模拟浏览器以用于测试目的的方法,并且旨在用于另一个测试框架(如JUnit或TestNG)中。有关简介,请参阅文档“HtmlUnit入门”。HtmlUnit用作不同的开源工具,如Canoo WebTest,JWebUnit,WebDriver,JSFUnit,WETATOR,Celerity,Spring MVC Test HtmlUnit作为底层的“浏览器”。
HtmlUnit最初由Gargoyle Software的Mike Bowler编写,并根据Apache 2许可证发布。从那时起,它已经收到了许多来自其他开发商的贡献,今天也会得到他们的帮助。
几年前在做一个购物网站的数据抓取工作中,偶然的机会邂逅了HtmlUnit了。记得当时怎么也捉取不到页面上的价格数据,而httpfox也追踪不到价格数据的URL,正当我一愁莫展的时个,HtmlUnit出现并帮我解决了问题。所以今天我要说声谢谢,也将HtmlUnit推荐给大家。
3.1 获取页面的TITLE、XML代码、文本
3.2 使用不同版本的浏览器打开
3.3 找到页面中特定的元素
tips:有些元素中没有id和name或其他节点,可以通过找他的子节点和父节点之间规律的方法来获取该元素,具体方法参考:https://blog.csdn.net/_/article/details/
其核心代码为:
3.4 元素检索
3.5 提交搜索
如果你只是爬取一个js不多的网站我建议换下面这个依赖
两者的区别我后面会讲,当然如果你不是用的maven工程(没有pom),可以去官网下载源代码库
二、使用
HtmlUnit使用起来非常简单,在使用时可以去官网手册查看语法事实上手册仅仅是入门讲解,听我下面讲也够了;
1、创建客户端和配置客户端
这里有个等待js执行,2.41.0很好兼容js多的情况,2.3却老是出问题,无法刷新网页,2.41.0打印的也很详细,执行过程也比较慢,可能慢工出细活
这里差多就获取了远程地址页面,现在要做的就是解析dom节点 填写数据模拟点击等事件。如果你要将他打印输出 htmlPage.asText()输出htmlPage节点的文本 htmlPage.asXml()输出htmlPage节点的xml代码
2、节点的获取
在此环节建议预备一点前端的知识
HtmlUnit给出两种节点获取方式
XPath查询:
比较详细的xpath讲解:https://testerhome.com/topics/20296
css选择器:(我更加钟爱)
css给出集合查询querySelectorAll和单个查询querySelector,如果你没有基础我给出以下例子你就明白:
htmlPage .querySelectorAll(“div”)返回htmlPage下面div标签集合
htmlPage .querySelector(“div:nth-child(1)”)返回htmlPage下面div的第一个div
htmlPage .querySelector(".submit")返回htmlPage下面第一个class=submit的标签
htmlPage .querySelector("#submit")返回htmlPage下面第一个id=submit的标签
htmlPage .querySelector(“div.submit”)返回htmlPage下面第一个class为submit的div标签
htmlPage .querySelector(“div[id=‘submit’]”)返回htmlPage下面第一个id为submit的div标签
以上的列举方法相信已经够用,不够的可以参阅css选择器
以下列举常见的html标签与HtmlUnit类的对应关系
有 setAttribute()方法节点的属性样式,setNodeValue()设置节点value值。是不是英语一下子就提高了?几乎所有的标签可以找到与之对应的的类,下面看我的实战:这是一个在线填写温度的excel文档 如果访问改地址,他会提示登陆网页上有登录按钮,如果登录过网页上是没有登录按钮,我们现在模拟打开自动登录框:
注意:htmlunit引用的jar包不全是会奇怪的报错
使用maven方法比较方便
参考:https://blog.csdn.net/weixin_/article/details/
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/12443.html