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 ...
随机推荐
- java集合的学习笔记
不知不觉也到了java集合这一章的学习,这因该是挺重要的一个章节,因为所有的程序都离不开数据,而一个良好的数据结构和算法应该是程序的灵魂吧. 今天对自己所初步了解的做一个总结: 数据结构是计算机存储. ...
- vue-cli简介(中文翻译)
vue-cli是一个简单的vuejs脚手架命令行工具. 安装 准备:Node.js(>=4.x,推荐6.x版本),npm版本3以上和Git. $npm install -g vue-cli 使用 ...
- 【Oracle】RAC控制文件多路复用
1.—关闭数据库,各个节点都要关闭: [oracle@rac1 ~]$ srvctl stop database -d racdb -o immediate 2.—启动任一节点到nomount状态: ...
- java加密解密算法位运算
一.实例说明 本实例通过位运算的异或运算符 “ ^ ” 把字符串与一个指定的值进行异或运算,从而改变每个字符串中字符的值,这样就可以得到一个加密后的字符串.当把加密后的字符串作为程序输入内容,异或运算 ...
- Vmware安装Linux系统的vmware-tools
我们应对都用vmware虚拟机,如果虚拟机是windows系统,每次虚拟机下方提示安装vmware-tools时,我们只需要点击安装即可. 但如果虚拟机安装的是linux系统的时候,发现就没一样了. ...
- Quartz经典入门案列
一.Quartz简介 Quartz是一个开放源码项目,专注于任务调度器,提供了极为广泛的特性如持久化任务,集群和分布式任务等.Spring对Quartz的集成与其对JDK Timer的集成在任务.触发 ...
- eclipse创建maven的ssm项目
自己接触ssm框架有一段时间了,从最早的接触新版ITOO项目的(SSM/H+Dobbu zk),再到自己近期来学习到的<淘淘商城>一个ssm框架的电商项目.用过,但是还真的没有自己搭建过, ...
- 死磕itchat源码--目录结构
阅读itchat源码时,先弄清itchat的目录结构 itchat │ config.py │ content.py │ core.py │ log.py │ returnvalues.py │ ut ...
- Bash中文速查表
最好用的中文速查表(Cheatsheet) 来源:https://github.com/skywind3000/awesome-cheatsheets 感谢网友们的贡献! ############## ...
- 训练1-N
给出N个整数,对着N个整数进行排序 Input 第1行:整数的数量N(1 <= N <= 50000)第2 - N + 1行:待排序的整数(-10^9 <= Ai <= 10^ ...