`
zyslovely
  • 浏览: 231469 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

htmlutil

阅读更多
  HtmlUnit是Java一个开发工具包,利用它写的Java代码可以模仿人点击link,提交表单的功能.主要是用来测试.
    可以到这里http://htmlunit.sourceforge.net/了解详细信息.
    模仿一个特定的浏览器

    通常您会希望将模拟特定浏览器.这样做是通过传递  com.gargoylesoftware.htmlunit.BrowserVersion到的WebClient构造。常数提供了一些常见的浏览器,但您可以创建自己的特定版本的执行一个BrowserVersion 。
  
Java代码  收藏代码

   1. public void homePage_Firefox() throws Exception { 
   2.     final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2); 
   3.     final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net"); 
   4.     assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText()); 
   5. } 

public void homePage_Firefox() throws Exception {
    final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2);
    final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");
    assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());
}


找到特定元素
    一旦你得到了一个参考的HtmlPage ,您可以搜索特定HtmlElement之一的'get'方法,或使用的XPath 。下面是一个例子,找到一个'线'的ID ,搜到了锚的名字:
get 方法
 
Java代码  收藏代码

   1. public void getElements() throws Exception { 
   2. final WebClient webClient = new WebClient(); 
   3. final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net"); 
   4. final HtmlDivision div = page.getHtmlElementById("some_div_id"); 
   5. final HtmlAnchor anchor = page.getAnchorByName("anchor_name"); 

    public void getElements() throws Exception {
    final WebClient webClient = new WebClient();
    final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");
    final HtmlDivision div = page.getHtmlElementById("some_div_id");
    final HtmlAnchor anchor = page.getAnchorByName("anchor_name");
}


Xpath
Java代码  收藏代码

   1. public void xpath() throws Exception { 
   2.     final WebClient webClient = new WebClient(); 
   3.     final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net"); 
   4.  
   5.     //get list of all divs 
   6.     final List<?> divs = page.getByXPath("//div"); 
   7.  
   8.     //get div which has a 'name' attribute of 'John' 
   9.     final HtmlDivision div = (HtmlDivision) page.getByXPath("//div[@name='John']").get(0); 
  10. } 

public void xpath() throws Exception {
    final WebClient webClient = new WebClient();
    final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");

    //get list of all divs
    final List<?> divs = page.getByXPath("//div");

    //get div which has a 'name' attribute of 'John'
    final HtmlDivision div = (HtmlDivision) page.getByXPath("//div[@name='John']").get(0);
}


使用代理服务器
最后WebClient构造让您可以指定代理服务器信息,在这些情况下,你需要通过一个连接。
Java代码  收藏代码

   1. public void homePage_proxy() throws Exception { 
   2.     final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2, "http://myproxyserver", myProxyPort); 
   3.  
   4.     //set proxy username and password  
   5.     final DefaultCredentialsProvider credentialsProvider = (DefaultCredentialsProvider) webClient.getCredentialsProvider(); 
   6.     credentialsProvider.addProxyCredentials("username", "password"); 
   7.  
   8.     final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net"); 
   9.     assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText()); 
  10. } 

public void homePage_proxy() throws Exception {
    final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2, "http://myproxyserver", myProxyPort);

    //set proxy username and password
    final DefaultCredentialsProvider credentialsProvider = (DefaultCredentialsProvider) webClient.getCredentialsProvider();
    credentialsProvider.addProxyCredentials("username", "password");

    final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net");
    assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText());
}


指定此BrowserVersion将改变发送到服务器的用户代理header,这行影响一Javascript的一些行为 。
提交表单
我们经常需要改变表单元素的值,并且提交到服务器:
Java代码  收藏代码

   1. public void submittingForm() throws Exception { 
   2.     final WebClient webClient = new WebClient(); 
   3.  
   4.     // Get the first page 
   5.     final HtmlPage page1 = webClient.getPage("http://some_url"); 
   6.  
   7.     // Get the form that we are dealing with and within that form,  
   8.     // find the submit button and the field that we want to change. 
   9.     final HtmlForm form = page1.getFormByName("myform"); 
  10.  
  11.     final HtmlSubmitInput button = form.getInputByName("submitbutton"); 
  12.     final HtmlTextInput textField = form.getInputByName("userid"); 
  13.  
  14.     // Change the value of the text field 
  15.     textField.setValueAttribute("root"); 
  16.  
  17.     // Now submit the form by clicking the button and get back the second page. 
  18.     final HtmlPage page2 = button.click(); 
  19. } 
分享到:
评论
1 楼 lk123456sc 2014-08-04  
HtmlUnit是很好很强大的工具,这篇文章写了很实用的简单例子,不错。

相关推荐

    htmlutil所需jar

    9. **commons-lang-2.4.jar**:Apache Commons Lang是Java语言工具库,包含了一系列实用方法,扩展了Java的标准类库,如字符串处理、日期时间操作等,增强了HTMLUtil的功能。 10. **cssparser-0.9.5.jar**:...

    html_getData.rar_getdata_htmlutil 使用_获取网页

    而"使用htmlutil下载网页图片"很可能是相关的代码示例或教程,详细描述了如何使用这个包来实现图片的下载和保存。 在实际应用中,处理网页数据时还需要考虑一些其他因素,比如错误处理(如网络连接失败、服务器返回...

    htmlutil包

    使用HTMLUtil或HTMLUnit时,开发者可以编写代码来定位页面元素(如通过ID、类名或XPath),然后模拟用户对这些元素的点击或者其他交互。这通常涉及到解析HTTP响应,创建DOM对象,然后使用类似于Selenium WebDriver的...

    excel转换html类(Excel2HtmlUtil的JAVA类)

    【标题】"excel转换html类(Excel2HtmlUtil的JAVA类)"所涉及的知识点主要集中在Java编程语言上,特别是如何使用Java处理Excel文件并将其转换为HTML格式。这个标题表明存在一个名为`Excel2HtmlUtil`的Java类,该类实现...

    知网-基于Java+HtmlUtil+jsoup实现爬取知网中国专利数据.zip

    在本项目中,我们主要探讨如何使用Java编程语言,结合HtmlUtil和Jsoup库来爬取并解析知网上的中国专利数据。知网是中国最大的学术文献数据库,包含大量的专利信息,对于研究者和开发者来说,能够高效地获取这些数据...

    HtmlUtil.java

    html 工具类 * @param disrPath 生成html的存放路径 * @param fileName 生成html名字 * @return void 返回类型

    最新版htmlutil,java无界面浏览器开发包

    最新版htmlutil,java无界面浏览器开发包

    htmlUtil.rar

    这两个类通过html的路径,将html提取为html内容的字符串,然后进行提取body里的内容,进行去除行间样式以及css等,然后还可以去除空行等,筛选出不需要的标签,当前类保留img标签,转换后可以自行设置img网络地址,...

    Java利用HtmlUtil和jsoup爬取知网中国专利数据的爬虫程序.zip

    爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。...

    通过htmlunit获取执行js代码后的html文档

    这个库在自动化测试、网页抓取以及其他需要与网页交互的场景中非常有用。通过HTMLUnit,开发者可以编写程序来模拟用户在浏览器上的操作,如点击链接、填写表单、执行JavaScript等,而无需真正打开一个浏览器实例。...

    java将excel转html

    在IT行业中,Java是一种广泛使用的编程语言,尤其在处理数据转换和Web应用方面。... 首先,Apache POI是Java的一个开源库,专门用于处理Microsoft Office格式的文件,如Excel(.xls和.xlsx)。它提供了一组API,使开发...

    htmlunit java版无界面浏览器 网页自动登录

    htmlunit java版无界面浏览器 实现网页自动登录利器 官方最新下载 htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源...

    Htmlunit2.23-bin.zip

    HTMLUnit是一个强大的Java库,它模拟了一个无头Web浏览器,主要用于自动化测试和网页抓取。... ...这对于创建自动化测试脚本或构建爬虫程序非常有用,因为它可以模拟用户与网页的交互,而无需真正打开浏览器。...

    htmlunit-2.30-bin.zip

    htmlunit是一款开源的java页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源实现。这个没有界面的浏览器,运行速度也是非常迅速的。...

    推荐一款封装各种Util工具类,这款神仙级框架你值得拥有!.docx

    3. HTML 工具类:Hutool 的 HtmlUtil 工具类提供了 HTML 编码、解码、清除 HTML 标签、过滤 HTML 文本等功能,可以防止 XSS 攻击和 SQL 注入。 4. 定时任务:Hutool 的 CronUtil 工具类提供了定时任务的功能,支持 ...

    Zhuyi.Utility

    6. **HTML源码解析**(HtmlUtil):HtmlUtil为解析和操作HTML文档提供了强大的工具,可以提取、修改网页元素,对于网页爬虫或自动化测试等场景尤其有用。 7. **图像处理**(ImageUtil):图像裁剪和缩放功能,使得...

    Velocity学习资料

    msg)&lt;/p&gt;`用于展示经过`HtmlUtil`对象处理后的`msg`对象的值。 2. **条件判断**:使用`#if($!obj)#else#end`进行条件判断。 - `($msg)&gt; &lt;script&gt; alert('$!msg'); &lt;/script&gt; #end&gt;` 当`msg`对象存在时,显示警告框...

    Access Objects from Velocity

    - `getterUtil`、`htmlUtil`、`httpUtil`、`imageToken`、`iteratorTool`、`listTool`、`localeUtil`、`mathTool`、`numberTool`、`paramUtil`、`portalUtil`、`portalprefsPropsUtil`、`propsUtil`、`...

    Hutool的api等可参考的文档

    - **HTTP客户端**:`HttpUtil`处理HTTP请求和响应,`HtmlUtil`解析HTML内容,`UserAgentUtil`生成和解析用户代理字符串。 - **定时任务**:`CronUtil`实现了基于Cron表达式的定时任务。 - **邮件工具**:`...

Global site tag (gtag.js) - Google Analytics