htmlUnit是什么?
htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源实现。是一个没有界面的浏览器,运行速度迅速。是junit的扩展之一。
主要作用:
常规意义上,该项目可以用来进行页面的测试工作,实现网页自动化测试(包括JS),但是一般来说,在小型爬虫项目中,这种框架十分常用,可以有效的分析出 dom的标签,并且有效的运行页面上的js以便得到一些需要执行JS才能得到的值。
以下我们使用代码演示常用方法:
package com.open111.demo;
import java.util.List;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlDivision;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
public class HtmlUnitTest {
public static void main(String[] args) throws Exception {
//使用webClient的构造方法指定以何种浏览器打开网页,此处为以firefox打开,也可以不指定
WebClient webClient=new WebClient(BrowserVersion.FIREFOX_52);
//使用代理IP,这是为了应对网站有反爬系统的情况
//WebClient webClient2=new WebClient(BrowserVersion.FIREFOX_52,"202.106.16.36",3128);
//HTMLClient对css和js的支持不好,所以将其关闭
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setJavaScriptEnabled(false);
HtmlPage page=webClient.getPage("http://www.baidu.com");
//获取当前页面的html
String string=page.asXml();
System.out.println("html内容为:"+string);
//获取当前页面的文本
String string2=page.asText();
System.out.println("纯文本内容为:"+string2);
//获取百度首页“百度一下”按钮
HtmlInput button=(HtmlInput) page.getElementById("su");
System.out.println("百度一下按钮的默认值为:"+button.getDefaultValue());
//获取百度首页搜索输入框
HtmlInput input=(HtmlInput) page.getElementById("kw");
System.out.println("百度首页输入框的最大长度为:"+input.getAttribute("maxlength"));
//找到百度首页所有div并打印第一个的html
List<?> divs=page.getByXPath("//div");
HtmlDivision division=(HtmlDivision) divs.get(0);
System.out.println(division.asXml());
//查找并获取特定条件的input
List<?> inputs=page.getByXPath("//input[@id='su']");
HtmlInput input2=(HtmlInput) inputs.get(0);
System.out.println(input2.asXml());
//为百度首页的搜索输入框设置值并提交搜索
HtmlInput input3=(HtmlInput) page.getElementById("kw");
//调用setValueAttribute方法设置值
input3.setValueAttribute("日向優梨");
HtmlInput button2=(HtmlInput) page.getElementById("su");
//模拟点击“百度一下”按钮
HtmlPage page2=button2.click();
System.out.println(page2.asXml());
//关闭webclient
webClient.close();
}
}
推荐大家一个Java的学习网站:Java知识学习网,Java资料下载,Java学习路线图,网址:https://www.java1010.com