htmlunit 获取指定元素

本文介绍如何利用HtmlUnit库获取指定网站的HTML元素,包括通过ID选择元素、按标签名获取所有元素及使用XPath定位。展示了具体的Java代码实现,并提供了运行输出示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

htmlunit 提供了丰富的api来获取指定元素 jsoup有的 htmlunit也有;

我们这里举例:

package com.hbk.htmlunit;

import java.io.IOException;
import java.net.MalformedURLException;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.DomElement;
import com.gargoylesoftware.htmlunit.html.DomNodeList;
import com.gargoylesoftware.htmlunit.html.HtmlDivision;
import com.gargoylesoftware.htmlunit.html.HtmlListItem;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

/**
 * 
 * @author 黄宝康 获取http://www.3dns.com.cn的源代码
 */
public class HtmlUnitTest {
    public static void main(String[] args) {
        WebClient webClient = new WebClient(BrowserVersion.FIREFOX_45); // 实例化Web客户端
        try {
            HtmlPage page = webClient.getPage("http://www.3dns.com.cn/");

            HtmlDivision div = page.getHtmlElementById("sabv");// 查找指定id的HTML dom 元素
            System.out.println(div.asXml());// 获取html
            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='sabv'][1]/div/ul/li").get(0);// xpath的方式获取
            System.out.println(item.asXml());
        } 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(); // 关闭客户端,释放内存
        }
    }
}

运行输出

二月 23, 2018 10:27:41 上午 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
警告: Obsolete content type encountered: 'application/x-javascript'.
二月 23, 2018 10:27:41 上午 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
警告: Obsolete content type encountered: 'application/x-javascript'.
二月 23, 2018 10:27:41 上午 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
警告: CSS error: 'http://www.3dns.com.cn/skin/3dns2017/cmsimages/reset.css' [1:2] Error in style rule. (Invalid token "@charset". Was expecting one of: <S>, <LBRACE>, ".", ":", "[", <COMMA>, <HASH>, <S>.)
二月 23, 2018 10:27:41 上午 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning
警告: CSS warning: 'http://www.3dns.com.cn/skin/3dns2017/cmsimages/reset.css' [1:2] Ignoring the following declarations in this rule.
二月 23, 2018 10:27:41 上午 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
警告: CSS error: 'http://www.3dns.com.cn/skin/3dns2017/cmsimages/reset.css' [53:52] Error in expression; ':' found after identifier "margin".
二月 23, 2018 10:27:41 上午 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
警告: CSS error: 'http://www.3dns.com.cn/skin/3dns2017/cmsimages/reset.css' [88:25] Error in expression. (Invalid token ".". Was expecting one of: <S>, <NUMBER>, "inherit", <IDENT>, <STRING>, ")", ":", "-", "=", <PLUS>, <COMMA>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <RESOLUTION_DPI>, <RESOLUTION_DPCM>, <PERCENTAGE>, <DIMENSION>, <UNICODE_RANGE>, <URI>, <FUNCTION>, "progid:".)
二月 23, 2018 10:27:41 上午 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
警告: CSS error: 'http://www.3dns.com.cn/skin/3dns2017/cmsimages/reset.css' [92:2] Error in style rule. (Invalid token "html". Was expecting one of: <S>, <LBRACE>, ".", ":", "[", <COMMA>, <HASH>, <S>.)
二月 23, 2018 10:27:41 上午 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler warning
警告: CSS warning: 'http://www.3dns.com.cn/skin/3dns2017/cmsimages/reset.css' [92:2] Ignoring the following declarations in this rule.
二月 23, 2018 10:27:41 上午 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
警告: CSS error: 'http://www.3dns.com.cn/skin/3dns2017/cmsimages/css.css' [42:109] Error in declaration. (Invalid token ";". Was expecting one of: <S>, ":".)
二月 23, 2018 10:27:41 上午 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
警告: CSS error: 'http://www.3dns.com.cn/skin/3dns2017/cmsimages/css.css' [71:74] Error in expression. (Invalid token ";". Was expecting one of: <S>, <NUMBER>, "inherit", <IDENT>, <STRING>, "-", <PLUS>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <RESOLUTION_DPI>, <RESOLUTION_DPCM>, <PERCENTAGE>, <DIMENSION>, <UNICODE_RANGE>, <URI>, <FUNCTION>, "progid:".)
二月 23, 2018 10:27:41 上午 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
警告: CSS error: 'http://www.3dns.com.cn/skin/3dns2017/cmsimages/css.css' [71:88] Error in expression. (Invalid token ";". Was expecting one of: <S>, <NUMBER>, "inherit", <IDENT>, <STRING>, "-", <PLUS>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <RESOLUTION_DPI>, <RESOLUTION_DPCM>, <PERCENTAGE>, <DIMENSION>, <UNICODE_RANGE>, <URI>, <FUNCTION>, "progid:".)
二月 23, 2018 10:27:41 上午 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
警告: CSS error: 'http://www.3dns.com.cn/skin/3dns2017/cmsimages/css.css' [71:100] Error in expression. (Invalid token ";". Was expecting one of: <S>, <NUMBER>, "inherit", <IDENT>, <STRING>, "-", <PLUS>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <RESOLUTION_DPI>, <RESOLUTION_DPCM>, <PERCENTAGE>, <DIMENSION>, <UNICODE_RANGE>, <URI>, <FUNCTION>, "progid:".)
二月 23, 2018 10:27:41 上午 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
警告: CSS error: 'http://www.3dns.com.cn/skin/3dns2017/cmsimages/css.css' [71:114] Error in expression. (Invalid token ";". Was expecting one of: <S>, <NUMBER>, "inherit", <IDENT>, <STRING>, "-", <PLUS>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <RESOLUTION_DPI>, <RESOLUTION_DPCM>, <PERCENTAGE>, <DIMENSION>, <UNICODE_RANGE>, <URI>, <FUNCTION>, "progid:".)
<div class="customer-cont warp" id="sabv">
  <div class="wtfaa">
    <ul>
      <li>
        <a href="http://www.gzdw.gov.cn/" target="_blank">
          中共赣州市委
        </a>
      </li>
      <li>
        <a href="http://www.ganzhou.gov.cn/" target="_blank">
          赣州市政府
        </a>
      </li>
      <li>
        <a href="http://www.gzsrd.gov.cn/" target="_blank">
          赣州市人大
        </a>
      </li>
      <li>
        <a href="http://www.jxgzzx.gov.cn/" target="_blank">
          赣州市政协
        </a>
      </li>
      <li>
        <a href="http://www.gzswb.gov.cn/" target="_blank">
          中共赣州市委办公厅
        </a>
      </li>
      <li>
        <a href="http://swxcb.rjdw.gov.cn/" target="_blank">
          中共瑞金市委宣传部
        </a>
      </li>
      <li>
        <a href="http://www.chinarjw.com/" target="_blank">
          中国瑞金网
        </a>
      </li>
      <li>
        <a href="http://www.shxga.gov.cn/" target="_blank">
          陕西省公安厅
        </a>
      </li>
      <li>
        <a href="http://www.zgq.gov.cn/" target="_blank">
          章贡区人民政府
        </a>
      </li>
      <li>
        <a href="http://www.gzkfq.gov.cn/" target="_blank">
          赣州经开区政府
        </a>
      </li>
      <li>
        <a href="http://www.ningdu.gov.cn/" target="_blank">
          宁都县人民政府
        </a>
      </li>
      <li>
        <a href="http://www.shicheng.gov.cn/" target="_blank">
          石城县人民政府
        </a>
      </li>
      <li>
        <a href="http://www.jxdy.gov.cn/" target="_blank">
          大余县人民政府
        </a>
      </li>
      <li>
        <a href="http://www.ruijin.gov.cn/" target="_blank">
          瑞金市人民政府
        </a>
      </li>
      <li>
        <a href="http://www.jxfc.gov.cn/" target="_blank">
          丰城市人民政府
        </a>
      </li>
      <li>
        <a href="http://www.gzdz.gov.cn/" target="_blank">
          赣州防震减灾网
        </a>
      </li>
      <li>
        <a href="http://www.gzsl.gov.cn/" target="_blank">
          赣州市水利局
        </a>
      </li>
      <li>
        <a href="http://www.gnly.gov.cn/" target="_blank">
          赣州市林业局
        </a>
      </li>
      <li>
        <a href="http://www.gzdofcom.gov.cn/" target="_blank">
          赣州市商务局
        </a>
      </li>
      <li>
        <a href="http://www.gzsmzj.gov.cn/" target="_blank">
          赣州市民宗局
        </a>
      </li>
      <li>
        <a href="http://www.gzhrss.gov.cn/" target="_blank">
          赣州市人社局
        </a>
      </li>
      <li>
        <a href="http://www.gzshbx.gov.cn/" target="_blank">
          赣州市社保局
        </a>
      </li>
      <li>
        <a href="http://www.gzyb.com.cn/" target="_blank">
          赣州市医保局
        </a>
      </li>
      <li>
        <a href="http://www.gzmzw.gov.cn/" target="_blank">
          赣州市民政局
        </a>
      </li>
    </ul>
    <ul style="display: none;">
      <li>
        <a href="http://www.gzssfj.gov.cn/" target="_blank">
          赣州市司法局
        </a>
      </li>
      <li>
        <a href="http://www.gzsport.gov.cn/" target="_blank">
          赣州市体育局
        </a>
      </li>
      <li>
        <a href="https://www.gzciit.gov.cn/" target="_blank">
          赣州市工信委
        </a>
      </li>
    </ul>
  </div>
</div>

======================
<a href="/" class="logo">
</a>

<a href="/">
  首页
</a>

<a href="http://www.3dns.com.cn/html7/gywl/index.html">
  关于网联
</a>

<a href="http://www.3dns.com.cn/html/jsfw/index.html">
  技术服务
</a>

<a href="http://www.3dns.com.cn/html/cpzx/index.html">
  产品中心
</a>

<a href="http://www.3dns.com.cn/html/khal/index.html">
  客户案例
</a>

<a href="http://www.3dns.com.cn/html/rczp/index.html">
  人才招聘
</a>

<a href="http://www.3dns.com.cn/html/lxwm/index.html">
  联系我们
</a>

<a class="prev" href="javascript:void(0)">
</a>

<a class="next" href="javascript:void(0)">
</a>

<a href="#">
  电子政务
</a>

<a href="#">
  网联科技提供集门户网站、应用系统、平台管理 于一体的信息化管理解决方案
</a>

<a href="#">
  系统集成
</a>

<a href="#">
  网联科技系统集成服务以用户的应用需求和实际条件为出发点,在合理规划的基础...
</a>

<a href="#">
  软件开发
</a>

<a href="#">
  网联科技提供信息化建设与软件定制开发能依据客户的实际业务特点大大提高整体...
</a>

<a href="#">
  IT运维服务
</a>

<a href="#">
  基于服务级别协议(SLA)向IT运维服务的使用者提供IT日常运维服务...
</a>

<a href="http://www.gzdw.gov.cn/" target="_blank">
  中共赣州市委
</a>

<a href="http://www.ganzhou.gov.cn/" target="_blank">
  赣州市政府
</a>

<a href="http://www.gzsrd.gov.cn/" target="_blank">
  赣州市人大
</a>

<a href="http://www.jxgzzx.gov.cn/" target="_blank">
  赣州市政协
</a>

<a href="http://www.gzswb.gov.cn/" target="_blank">
  中共赣州市委办公厅
</a>

<a href="http://swxcb.rjdw.gov.cn/" target="_blank">
  中共瑞金市委宣传部
</a>

<a href="http://www.chinarjw.com/" target="_blank">
  中国瑞金网
</a>

<a href="http://www.shxga.gov.cn/" target="_blank">
  陕西省公安厅
</a>

<a href="http://www.zgq.gov.cn/" target="_blank">
  章贡区人民政府
</a>

<a href="http://www.gzkfq.gov.cn/" target="_blank">
  赣州经开区政府
</a>

<a href="http://www.ningdu.gov.cn/" target="_blank">
  宁都县人民政府
</a>

<a href="http://www.shicheng.gov.cn/" target="_blank">
  石城县人民政府
</a>

<a href="http://www.jxdy.gov.cn/" target="_blank">
  大余县人民政府
</a>

<a href="http://www.ruijin.gov.cn/" target="_blank">
  瑞金市人民政府
</a>

<a href="http://www.jxfc.gov.cn/" target="_blank">
  丰城市人民政府
</a>

<a href="http://www.gzdz.gov.cn/" target="_blank">
  赣州防震减灾网
</a>

<a href="http://www.gzsl.gov.cn/" target="_blank">
  赣州市水利局
</a>

<a href="http://www.gnly.gov.cn/" target="_blank">
  赣州市林业局
</a>

<a href="http://www.gzdofcom.gov.cn/" target="_blank">
  赣州市商务局
</a>

<a href="http://www.gzsmzj.gov.cn/" target="_blank">
  赣州市民宗局
</a>

<a href="http://www.gzhrss.gov.cn/" target="_blank">
  赣州市人社局
</a>

<a href="http://www.gzshbx.gov.cn/" target="_blank">
  赣州市社保局
</a>

<a href="http://www.gzyb.com.cn/" target="_blank">
  赣州市医保局
</a>

<a href="http://www.gzmzw.gov.cn/" target="_blank">
  赣州市民政局
</a>

<a href="http://www.gzssfj.gov.cn/" target="_blank">
  赣州市司法局
</a>

<a href="http://www.gzsport.gov.cn/" target="_blank">
  赣州市体育局
</a>

<a href="https://www.gzciit.gov.cn/" target="_blank">
  赣州市工信委
</a>

<a href="http://www.miitbeian.gov.cn/" target="_blank">
  赣ICP备10200822号 
</a>

======================
<li>
  <a href="http://www.gzdw.gov.cn/" target="_blank">
    中共赣州市委
  </a>
</li>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄宝康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值