org.htmlparser小结

2023-05-16

org.htmlparser 主要用来解析HTML网页。


一、基本上HTML中的每个标签对应于一个类,例如:

p标签对应于ParagraphTag类

ul标签对应于BulletList类

li标签对应于Bullet类

a标签对应于LinkTag类

文本对应于TextNode类

span标签对应于Span类

div标签对应于Div类

等等。


二、包含多种类型的HTML过滤器,例如:

1、属性过滤器,例如查询id=‘123’的标签

HasAttributeFilter answerFilter = new HasAttributeFilter("id","123");

2、样式过滤器,例如查询class='entry-text'的div标签

CssSelectorNodeFilter answerFilter = new CssSelectorNodeFilter("div[class='entry-text']");

3、标签名过滤器,例如查询所有的h2标签

TagNameFilter h2TagName_list = new TagNameFilter("h2");

4、父节点过滤器,例如查询父节点符合h2TagName_list过滤器的所有标签,第二个参数表示是否递归,true表示递归查找,即父、父父、父父父、依次向上查找。

HasParentFilter hasParentOfLi_list = new HasParentFilter(h2TagName_list,true);

5、并 过滤器,即查询同时满足多个过滤器的标签

AndFilter listFilter = new AndFilter(new NodeFilter[]{过滤器1,过滤器2,过滤器3,.....});

6、或者 过滤器,即查询满足其中任何一个过滤器的标签

OrFilter answerFilter = new OrFilter(过滤器1, 过滤器2);

7、标签类过滤器,即查询这一类的标签

NodeClassFilter textFilter_detail = new NodeClassFilter(TextNode.class);

8、文本过滤器,即查询包含这一文本内容的所有文本标签

StringFilter stringOf10WhyFilter_detail = new StringFilter("hello");

9、不 过滤器,即查询不符合该过滤器的所有标签

NotFilter notStringOf10WhyFilter_detail = new NotFilter(过滤器1);

10、 LinkStringFilter,这个Filter用于判断链接中是否包含某个特定的字符串,可以用来过滤出指向某个特定网站的链接

NodeFilter filter = new LinkStringFilter("www.baizeju.com");

等等


三、对获取到的网页内容进行解析

NodeList questionNodeList = new Parser(content).parse(questionFilter);

其中content表示网页内容,字符串类型;

questionFilter表示过滤器,即在网页字符串中查找符合该过滤器的所有标签。

对于有些网页的解析可能会报如下错误:

org.htmlparser.util.ParserException: Error in opening a connection to java.io.IOException: Invalid argument.......

解决方法如下:

/**
     * 解析字符串
     * @param inputHTML String
     * @return Parser
     */
    public static Parser createParser(String inputHTML) {
        Lexer mLexer = new Lexer(new Page(inputHTML));
        return new Parser(mLexer,new DefaultParserFeedback(DefaultParserFeedback.QUIET));
    }

在createParser里面去做new Parser(),问题解决。

而上面的new Parser(content).parse(questionFilter);语句改成myParser = createParser(content).parse(questionFilter);就行了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

org.htmlparser小结 的相关文章

随机推荐

  • 关于thinkbook14+以及16+安装ubuntu22.04 LTS后WIFI问题

    首先 xff0c 介绍一下电脑配置 购买的是2022款Thinkbook14 43 R7 6800H锐龙核显版 Intel的也一样可以用 1 设置bios 点击开机键后疯狂按F1打开BIOS xff0c 将security boot设置为d
  • RTC可调节时钟

    此代码只可显示小时 分钟 xff0c 大家可以参考并写出秒甚至年月日的相关操作代码 rtc h ifndef RTC H define RTC H 时间结构体 typedef struct vu8 hour vu8 min vu8 sec
  • C语言中关于float、double、long double精度及数值范围理解

    转自 xff1a http blog sina com cn s blog 6ebd49350101gdgo html IEEE754 浮点数的表示方法 C 语言里对 float 类型数据的表示范围为 3 4 10 38 xff5e 43
  • 移动机器人系列----->前言

    移动机器人系列 gt 前言 准备开始写移动机器人相关的文章 初步的想法是做一个能够实现室内自主定位导航的移动机器人 xff0c 通过写这一系列的文章来记录和探讨学习过程中的问题 xff08 这是一篇立flag的文章 xff0c 希望不会立马
  • 移动机器人系列----->框架开篇

    移动机器人系列 gt 框架开篇 1 xff1a 框架浅聊 这次项目的重点是实现移动机器人的定位建图以及路径规划算法 xff0c 底盘硬件部分不过多的进行展开 下图是项目简单的硬件框架示意图 xff08 1 xff09 为节约时间 xff0c
  • 移动机器人系列----->树莓派4B测试ORB-SLAM2

    移动机器人系列 gt 树莓派4B运行测试ORB SLAM2 注 测试平台为树莓派4B xff08 8 43 32G xff09 1 xff1a 树莓派安装ubuntu18 04及编译ORB SLAM2 1 1 xff1a 树莓派上安装ubu
  • PX4飞控之自主返航(RTL)控制逻辑

    本文基于PX4飞控1 5 5版本 xff0c 分析导航模块中自护返航模式的控制逻辑和算法 自主返航模式和导航中的其他模式一样 xff0c 在Navigator main函数中一旦触发case vehicle status s NAVIGAT
  • MATLAB的MCC命令

    mcc函数将matlab的m文件转化为c c 43 43 文件 mcc函数命令格式 xff1a mcc option fun fun2 mexfile1 mlifile 函数作用 xff1a 将matlab程序中的fun m转化为fun c
  • STM32 | 分享自定义协议的一些典型例子

    1024G 嵌入式资源大放送 xff01 包括但不限于C C 43 43 单片机 Linux等 关注微信公众号 嵌入式大杂烩 xff0c 回复1024 xff0c 即可免费获取 xff01 上次分享的 分享一个很酷的上位机软件 中 xff0
  • 基于TCP/IP和UDP协议的socket编程结构解析

    1 套接字 xff08 socket xff09 socket起源于Unix xff0c 而Unix Linux基本哲学之一就是 一切皆文件 xff0c 都可以用 打开open gt 读写write read gt 关闭close 模式来操
  • printf 函数实现的深入剖析[转载]

    研究printf的实现 xff0c 首先来看看printf函数的函数体 xff01 int printf const char fmt int i char buf 256 va list arg 61 va list char amp f
  • Altium Designer(AD20)画PCB时ctrl键、shift键、鼠标按键的妙用

    ctrl键的妙用 1 绘画窗口放大缩小 按住ctrl键 43 滚动鼠标滚轮 xff0c 滚前放大 xff0c 滚后缩小 2 高亮 按住ctrl键 43 鼠标点击有网络信号的焊盘 过孔 线 xff0c 便高亮该网络 xff0c 其他网络变暗或
  • PyQt结合Opencv显示图片以及摄像头

    环境 xff1a python3 7 PyQt5 11 3 OpenCV python4 0 0 21 Pycharm 2018 2 2 1 通过PyQt与OpenCV显示图片 import sys import cv2 import nu
  • allegro更新铜皮方法和快捷键

    前景 xff1a 在如今时代 xff0c allegro软件是三大PCB设计软件之一 xff0c 不少知名公司都要求会allegro软件 xff0c 所以很多PCBlayout工程师开始转用allegro xff0c 同时也出现很多新手学a
  • Allegro快捷键(env)位置和快捷键设置

    前景 在画PCB板 xff0c 保证质量同时 xff0c 也要讲究效率 xff0c 要是一只手用鼠标来点选命令画板 xff0c 效率会大大折扣 xff0c 所以出现PCBlayout快捷键 xff0c 本文章将的是allegro快捷键 al
  • Altium Designer使用者,你想要一键出Gerber吗?

    前言 在我们辛辛苦苦画完一个PCB板 xff0c 细心谨慎地生成Gerber xff0c 突然 xff0c 发现一个丝印没摆好 xff0c 只能改丝印再重新生成Gerber xff0c 又突然 xff0c 发现有根线离电源太近了 xff0c
  • allegro同比例放大缩小LOGO丝印

    前言 在遇到元件密集情况下 xff0c 既要兼顾元件位号丝印 xff0c 又能凸显公司的LOGO时 xff0c 常常碰到LOGO丝印太大 xff0c 放不下 xff0c 要是再缩小一点 xff0c 就能放下了 所以我就写了这篇文章 xff0
  • 利用Sigrity的SPEED2000进行时域电源噪声分析

    前序 相信大家在网上可以找到本文章的类似教程 xff0c 我就是这样 xff0c 找到了教程 xff0c 兴致冲冲地按教程每个步骤操作 xff0c 但最后因为素材不一样 xff0c 得不到想要的结果 xff0c 有时出来的波形是一条水平线
  • 利用Sigrity PowerDC进行单板直流仿真--静态功率传输体系分析

    前序 本文章利用Sigrity PowerDC进行单板直流仿真 静态功率传输体系分析的教程写出来 xff0c 同时 xff0c 将Sigrity PowerDC 单板直流仿真分析素材上传 xff0c 供大家使用 xff0c 不用苦苦寻找仿真
  • org.htmlparser小结

    org htmlparser 主要用来解析HTML网页 一 基本上HTML中的每个标签对应于一个类 xff0c 例如 xff1a p标签对应于ParagraphTag类 ul标签对应于BulletList类 li标签对应于Bullet类 a