分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

htmlunit 简单操作

发布时间:2023-09-06 01:32责任编辑:苏小强关键词:暂无标签

首先我们新建一个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 简单操作

原文地址:http://www.cnblogs.com/chuanwazi/p/8109794.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved