httpunit 抓取网页(开源java页面分析工具运行速度迅速,被誉为java浏览器)
优采云 发布时间: 2021-10-28 16:03httpunit 抓取网页(开源java页面分析工具运行速度迅速,被誉为java浏览器)
HtmlUnit 介绍
htmlunit 是一个开源的 java 页面分析工具。阅读完页面后,您可以有效地使用 htmlunit 来分析页面上的内容。该项目可以模拟浏览器操作,被称为java浏览器的开源实现。它是一个没有界面的浏览器,运行速度很快。是junit的扩展之一
HtmlUnit 示例
import java.io.IOException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
public class Ddkjg {
public static void main(String[] args) throws IOException {
// 得到浏览器对象,直接New一个就能得到,现在就好比说你得到了一个浏览器了
WebClient webclient = new WebClient();
// 下面这2句可以写,也可以不写,设置false就是不加载css和js。访问速度更快
webclient.getOptions().setCssEnabled(false);
webclient.getOptions().setJavaScriptEnabled(false);
// 做的第一件事,去拿到这个网页,只需要调用getPage这个方法即可
HtmlPage htmlpage = webclient.getPage("https://baidu.com");
// 根据名字得到一个表单,查看上面这个网页的源代码可以发现表单的名字叫“f”
final HtmlForm form = htmlpage.getFormByName("f");
// 同样道理,获取”百度一下“这个按钮
final HtmlSubmitInput button = form.getInputByValue("百度一下");
// 得到搜索框
final HtmlTextInput textField = form.getInputByName("wd");
//设置搜索框的value
textField.setValueAttribute("战狼2");
// 设置好之后,模拟点击按钮行为。
final HtmlPage nextPage = button.click();
// 把结果转成String
String result = nextPage.asXml();
//得到的是点击后的网页
System.out.println(result);
}
}
注意:
1:webclient 包是 htmlunit,不是 httpunit。 httpunit 的 webclient 类是抽象的,不能直接新建。
2:htmlunit包使用最新版本的2.27 jar包。低版本的jar包没有getOptions()类。
3:如果出现这个错误,UnsupportedClassVersionError。表示版本不一致。确保你本地jdk版本是1.8,eclipse部署的版本也是1.8,所以我就不说怎么看了。
jar包下载地址: