htmlunit 简单操作
首先我们新建一个Maven普通客户端项目,然后打开pom.xml
引入htmlunit支持:
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.26</version>
</dependency>
然后我们写一个测试类,来解析www.baidu.com 获取网页html以及网页文本,这里有点类似httpClient,但是底层执行过程默认多了一个js执行过程(当然htmlunit提供了关闭js解析设置);
package com.demo;
import com.gargoylesoftware.htmlunit.BrowserVersion;
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(BrowserVersion.FIREFOX_52,"202.106.16.36",3128); // 实例化Web客户端
webClient.getOptions().setCssEnabled(false); // 取消css支持
webClient.getOptions().setJavaScriptEnabled(false); // 取消javascript支持
try {
HtmlPage page=webClient.getPage("http://www.baidu.com"); // 解析获取页面
Thread.sleep(10000); // 休息10秒钟 等待htmlunit执行js HtmlForm form=page.getFormByName("myform"); // 得到搜索Form
HtmlTextInput textField=form.getInputByName("q"); // 获取查询文本框
HtmlSubmitInput button=form.getInputByName("submitButton"); // 获取提交按钮
textField.setValueAttribute("java"); // 文本框“填入”数据
HtmlPage page2=button.click(); // 模拟点击 HtmlTable table=page.getHtmlElementById("table1");
for(HtmlTableRow row:table.getRows()){ // 遍历所有行
for(HtmlTableCell cell:row.getCells()){ // 遍历所有列
System.out.print(cell.asText()+" ");
}
System.out.println();
} HtmlDivision div=page.getHtmlElementById("navMenu"); // 查找指定id的html dom元素
System.out.println(div.asXml());
System.out.println("======================");
DomNodeList<DomElement> aList=page.getElementsByTagName("a"); // 根据tag名称查询所有tag
for(int i=0;i<aList.getLength();i++){
DomElement a=aList.get(i);
System.out.println(a.asXml());
}
System.out.println("======================");
HtmlListItem item =(HtmlListItem) page.getByXPath("//div[@id='navMenu'][1]/ul/li").get(0); // xpath方式
System.out.println(item.asXml()); 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(); // 关闭客户端,释放内存
}
}
}
这里代理IP如何找 ,很多网站都有提供的,我们介绍一个,http://www.66ip.cn

htmlunit 简单操作的更多相关文章
- x01.MagicCube: 简单操作
看最强大脑,发现魔方还是比较好玩的,便买了一个,对照七步还原法,居然也能成功还原. 为什么不写一个魔方程序呢?在网上找了找,略作修改,进行简单操作,还是不错的,其操作代码如下: protected o ...
- js简单操作Cookie
贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...
- GitHub学习心得之 简单操作
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 前言 本文对Github的基本操作进行了总结, 主要基于以下文章: http://gitre ...
- Linq对XML的简单操作
前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...
- Linux 中 Vi 编辑器的简单操作
Linux 中 Vi 编辑器的简单操作 Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi filename //打开或新 ...
- python(pymysql)之mysql简单操作
一.mysql简单介绍 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库 ...
- ZooKeeper系列3:ZooKeeper命令、命令行工具及简单操作
问题导读1.ZooKeeper包含哪些常用命令?2.通过什么命令可以列出服务器 watch 的详细信息?3.ZooKeeper包含哪些操作?4.ZooKeeper如何创建zookeeper? 常用命令 ...
- ORACLE的安装与网页版创建表空间的简单操作以及PLsql的简单操作
1.oracle的安装: 安装简单易学,在这里不做解释.下载看装包后耐心等待,注意安装目录不要有中文字符,尽量按照指定目录进行安装.安装完成后会占用有大约5g的内存. 如果要卸载oracle,需要用其 ...
- C#反射技术的简单操作(读取和设置类的属性)
public class A { public int Property1 { get; set; } } static void Main(){ A aa = new A(); Type type ...
随机推荐
- lua lfs库
lfs.attributes(filepath [, aname]) 获取路径指定属性 lfs.chdir(path) 改变当前工作目录,成功返回true,失败返回nil加上错误信息 l ...
- 错误:android.util.SuperNotCalledException
android.util.SuperNotCalledException: Activity {…….YouTubePlayActivity} did not call through to supe ...
- CUDA与OpenCL架构
CUDA与OpenCL架构 目录 CUDA与OpenCL架构 目录 1 GPU的体系结构 1.1 GPU简介 1.2 GPU与CPU的差异 2 CUDA架构 2.1 硬件架构 2.1.1 GPU困境 ...
- springdatajpa使用informix数据库出现no such column 异常的问题
本博客属原创,转载请注明出处 问题描述: 环境: spring data jpa版本4.0.3 informix驱动版本3.50.JC9 程序结构 jpa配置文件对应的jdbc配置 dao层继承jpa ...
- testdirector
TestDirector是全球最大的软件测试工具提供商Mercury Interactive公司生产的企业级测试管理工具,也是业界第一个基于Web的测试管理系统
- java操作Excel的poi的简介
一.POI概述 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 结构: HSSF - 提供读写Mi ...
- mysql新建用户,修改权限
(1)登录:mysql -u root -p (2)查看现有用户(mysql8.0.1) mysql> select host,user,authentication_string from m ...
- IDEA - 自动添加代码
自动添加代码Surroundwith 快捷键:Ctrl+Alt+T 有if.while.function.try.....
- [luogu3232 HNOI2013] 游走 (高斯消元 期望)
传送门 题目描述 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等 ...
- 小松之LINUX驱动学习笔记之模块间函数调用通讯
1. 符号导出函数 EXPORT_SYMBOL() EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用. EXPORT_SYMBOL_GPL( ...