HTMLParser的visitor访问方式详解

htmlparser使用详解 HTMLParser具有小巧,快速的优点,缺点是相关文档比较少(英文的也少),很多功能需要自己摸索。对于初学者还是要费一些功夫的,而一旦上手以后,会发现HTMLParser的结构设计很巧妙,非常实用,基本你的各种需求都可以满足。 这里写了一点入门的东西,希望能对新学习HTMLParser的朋友们有所帮助。 立即下载

参考文档:http://allenj2ee.iteye.com/blog/222457 ,希望与大家分享

从简单方面的理解,Filter是根据某种条件过滤取出需要的Node再进行处理。Visitor则是遍历内容树的每一个节点,对于符合条件的节点进行处理

。实际的结果异曲同工,两种不同的方法可以达到相同的结果:
1、
package html;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.htmlparser.Parser;
import org.htmlparser.Remark;
import org.htmlparser.Tag;
import org.htmlparser.Text;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.NodeVisitor;

public class TestVisitor {

 public static void testVisitor (String url){
  try {
   //==============连接方法一 ==================
   URL l_url = new java.net.URL(url);
   HttpURLConnection l_connection =(HttpURLConnection) l_url.openConnection();
   //通过指定URLConnection对象创建Parser对象
   Parser parser = new Parser(l_connection);
   
   //==============连接方法二 ==================
   //建立连接
//   HttpURLConnection l_connection =(HttpURLConnection) l_url.openConnection();
   //通过指定URLConnection对象创建Parser对象
//   Parser parser = new Parser();
//   parser.setURL(url);
   
   parser.setEncoding(parser.getEncoding());
   NodeVisitor visitor = new NodeVisitor (true, false){
    public void visitTag(Tag tag){
     System.out.println("tagname="+tag.getTagName()+"--text="+tag.getText()+"--

class="+tag.getPage());
    }
    public void visitStringNode (Text string)    {
     System.out.println("This is Text:"+string);
                }
                public void visitRemarkNode (Remark remark)  {
                 System.out.println("This is Remark:"+remark.getText());
                }
                public void beginParsing () {
                 System.out.println("beginParsing");
                }
                public void visitEndTag (Tag tag){
                 System.out.println("visitEndTag:"+tag.getText());
                }
                public void finishedParsing () {
                 System.out.println("finishedParsing");
                }
   };
   parser.visitAllNodesWith(visitor);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 public static void main(String[] args) {
  testVisitor("http://www.hao123.com/");
 }
}
2、可以看到,开始遍历所以的节点以前,beginParsing先被调用,然后处理的是中间的Node,最后在结束遍历以前,finishParsing被调用。因为我

设置的 recurseChildren和recurseSelf都是false,所以Visitor没有访问子节点也没有访问根节点的内容。

3、先把recurseSelf设置成true,看看会发生什么。
NodeVisitor visitor = new NodeVisitor( false, true) {
可以看到,HTML页面的第一层节点都被调用了。

4、我们再用下面的方法调用看看:
NodeVisitor visitor = new NodeVisitor( true, false)
可以看到,所有的子节点都出现了,除了刚刚例子里面的两个最上层节点This is Tag:head和This is Tag:html
想让它们都出来,只需要
NodeVisitor visitor = new NodeVisitor( true, true) {

 

Laravel开发-visitor-log Laravel开发-visitor-log Laravel 4记录所有访客的包 立即下载

相关推荐

Laravel开发-visitor

Laravel开发-visitor 以数据库、页面点击量记录您的访问者,并为Laravel 5生成访问计数器

htmlparser修改html,如何用htmlparser修改html中标签的内容

/*** @param args* @throws ParserException*/public static void main(String[] args) throws ParserException {// TODO Auto-generated method stubString sText="测试文本一测试文本二其他数据;";String sText_new = "";Parser ...

weixin_36257663的博客 334

JSQLParser练习实例

JSQLParser练习实例,WhereExpressionVisitor.java的Main可以执行

Htmlparser 得到替换后的文本

需求:替换HTML文件内的全部链接然后得到替换后的HTML文件 考虑采用Htmlparser解析 代码如下 [code="java"]public class DoReplaceHtmlHref implements Callable { private String content; public DoReplaceHtmlHref(String conte...

panxiuyan 232

电路方案分析(十二)USB Type-C PD 移动电源参考设计方案

TPD8S300为USB Type-C连接器的CC1,CC2,SBU1和SBU2引脚集成了四个通道的20v短到vbus和过压保护。TPD8S300集成了八个IEC61000-4-2ESD保护通道,用于USB Type-C连接器的CC1、CC2、SBU1、SBU2、DP_T (顶侧D-) 、DM_T (顶侧D-) 、DP_B (底侧D-) 引脚。当电源组是接收器并为其自身的电池充电时,该芯片会对电池充电,而在电源模式期间,该芯片充当DC-DC转换器以生成VBUS。

小幽余生不加糖 2万+

SAP-MM:SAP MM(物料管理)模块 的系统化学习计划

SAP MM模块的系统化学习计划

baidu_35680696的博客 1546

用C#实现Visitor模式

Visitor模式:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。public abstract class Pet {  abstract public void Accept(Visitor v); } public class Cat:Pet {  private string state="";  public Cat(strin

jotter的专栏 1436

企业AI Agent的多模态学习在用户体验优化中的应用

本文旨在为企业技术团队提供关于多模态AI Agent在用户体验优化领域的全面技术指南。多模态学习如何突破传统单模态AI的局限性企业级AI Agent的系统架构设计原则多模态特征融合的工程实现细节用户体验度量的量化方法实际部署中的性能优化策略研究范围涵盖计算机视觉、自然语言处理、语音识别等多个AI子领域的技术融合,以及它们在电商、金融、医疗等行业的应用实践。首先介绍多模态学习的核心概念和技术原理然后深入分析关键算法和数学模型接着通过完整项目案例展示实际应用。

大模型应用工坊 706

HTMLParser使用详解(4)- 通过Visitor访问内容

HTMLParser遍历了网页的内容以后,以树(森林)结构保存了结果。HTMLParser访问结果内容的方法有两种。使用Filter和使用Visitor。下面介绍使用Visitor访问内容的方法。4.1 NodeVisitor从简单方面的理解,Filter是根据某种条件过滤取出需要的Node再进行处理。Visitor则是遍历内容树的每一个节点,对于符合条件的节点进行处理。实际的结果异曲同工,两种不...

Allen.CD.China 238

EXCEL VBA从入门到精通 第一章:VBA入门

在VBA中,需要使用关键字Dim来定义一个变量,后面跟上变量名和变量的数据类型。例如,下面的代码定义了一个整型变量x和一个字符串变量name在VBA中,使用关键字Const来定义常量,后面跟上常量名和常量的值。例如,下面的代码定义了一个整型常量MAX_NUM和一个字符串常量MESSAGE需要注意的是,常量一旦被定义,其值就不能被改变。

1万+

【DaVinci Developer工具实战】03 -导入xml文件

本文档描述了 DaVinci Developer 导入数据的的具体功能 ,它适用于导入AUTOSAR SWC 模板【AUTOSAR XML 文件】 文件。

1990

HTMLParser的filter访问方式详解

<br />参考地址:http://hi.baidu.com/neverend06/blog/item/86ab838aa60dfc6c9f2fb4fe.html<br />HTMLParser遍历了网页的内容以后,以树(森林)结构保存了结果。HTMLParser访问结果内容的方法有两种。使用Filter和使用Visitor。<br />(一)Filter类<br />顾名思义,Filter就是对于结果进行过滤,取得需要的内容。HTMLParser在org.htmlparser.filters包之内一共定义

技术人宝哥 4681

YOLOv11 改进 - 注意力机制 | Deformable-LKA 可变形大核注意力:自适应采样网格优化特征捕捉,提升不规则目标感知

本文介绍了可变形大核注意力(D-LKA Attention)及其在YOLOv11中的结合。D-LKA Attention是一种简化的注意力机制,采用大卷积核利用体积上下文信息,通过可变形卷积灵活调整采样网格,适应多样数据模式。它有2D和3D版本,3D版本在跨深度数据理解上表现出色,共同构成了D-LKA Net架构。我们将D-LKA Attention集成进YOLOv11,在模型的检测头部分引入deformable_LKA_Attention模块。实验表明,该方法在分割任务上表现优于现有方法,提升了模型的检测

魔改工程师的博客 1170

java htmlparser 使用教程_htmlparser使用指南

1.*采用Visitor方式访问Html2.3.try{4.Parserparser=newParser();5.parser.setURL(”http://www.google.com”);6.parser.setEncoding(parser.getEncoding());7.NodeVisitorvisitor=newNodeVisitor(){...

weixin_32090653的博客 377

光学测量仿真软件:Zygo_(5).Zygo的数据处理与分析方法

通过上述综合案例,我们可以看到Zygo中的数据处理与分析方法是如何一步一步应用于实际数据的。从数据导入到预处理,再到滤波、表面分析、缺陷检测和数据可视化,每一步都至关重要,最终确保了数据的准确性和可靠性。处理后的数据还可以导出为多种格式,便于在其他软件中进行进一步的处理或报告。希望这个案例能够帮助您更好地理解和应用Zygo中的数据处理与分析方法。

kkchenjj的博客 946

RK356x U-Boot研究所(命令篇)3.7 pci与nvme命令的用法

RK356x U-Boot研究所(命令篇)3.7 pci与nvme命令的用法

Systemcall名屋 2084

HtmlParser用法

htmlparser中有两种访问节点的方式 1、filter。通过filter,能够过滤出我们关心的节点。从而对节点进行进一步的访问。 2、vistor。vistor和filter不同。vistor是遍历内容树的每一个节点,对于符合条件的节点做相应的处理。 先看一下下面的html代码:                     id="treeDemo_1_switch">

imzoer的专栏 4098

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

HTMLParser使用详解(4) - 通过Visitor访问内容

HTMLParser使用详解(4) - 通过Visitor访问内容 HTMLParser遍历了网页的内容以后,以树(森林)结构保存了结果。HTMLParser访问结果内容的方法有两种。使用Filter和使用Visitor。下面介绍使用Visitor访问内容的方法。 4.1 NodeVisitor从简单方面的理解,Filter是根据某种条件过滤取出需要的Node再进行处理。Visitor则是遍历内容

mwq30123的专栏 704

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java htmlparser 代理_Java解析HTML之HTMLParser使用与详解

转自:http://free0007.iteye.com/blog/1131163HTMLParser具有小巧,快速的优点,缺点是相关文档比较少(英文的也少),很多功能需要自己摸索。对于初学者还是要费一些功夫的,而一旦上手以后,会发现HTMLParser的结构设计很巧妙,非常实用,基本你的各种需求都可以满足。这里我根据自己这几个月来的经验,写了一点入门的东西,希望能对新学习HTMLParser的朋...

weixin_39652869的博客 275

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java解析HTML之HTMLParser使用与详解

1、相关资料 官方文档:http://htmlparser.sourceforge.NET/samples.html API:http://htmlparser.sourceforge.net/javadoc/index.html 其它HTML 解释器:jsoup等。由于HtmlParser自2006年以后就再没更新,目前很多人推荐使用jsoup代替它。 2、使

jediael_lu的专栏 9900

HTMLParser的两种使用

因为论文的关系,要用到HTMLParser这个项目(使用的HTMLParser版本是1.6)一,数据组织分析:HtmlParser主要靠Node、AbstractNode和Tag来表达Html,因为Remark和Text相对简单,此处就将其忽略了。 Node是形成树结构表示HTML的基础,所有的数据表示都是接口Node的实现,Node定义了与页面树结构所表达的页面Page对象

Eric的JAVA之路 6929

HTMLParser使用visitor访问html dom树节点的原理

上一篇讲解了filter访问html树的原理,今天在讲解一下htmlparser中visitor访问html的dom树的原理。网上关于htmlparser工作原理的资料比较少,要想学习htmlparser最好看htmlparser的源码,htmlparser源码不算大,代码都是大牛们写的,可读性非常好,只要从main函数中跟踪程序的执行过程就能够很好的了解htmlparser的工作原理。下面总结一

WitsMakeMen的专栏 3066

java htmlparser 使用教程_HtmlParser基础教程

1、相关资料官方文档:http://htmlparser.sourceforge.net/samples.htmlAPI:http://htmlparser.sourceforge.net/javadoc/index.html其它HTML 解释器:jsoup等。由于HtmlParser自2006年以后就再没更新,目前很多人推荐使用jsoup代替它。2、使用HtmlPaser的关键步骤(1)通过Pa...

weixin_31969181的博客 566

HtmlParser学习笔记(三)-- 使用Visitor访问结点

    使用NodeVisitor方式访问html结点,代码如下:   package com.javaeye.suo.htmlparser.samples; import org.htmlparser.Parser; import org.htmlparser.Remark; import org.htmlparser.Tag; import org.htmlparser.Tex...

雨中漫步--专栏 294
上一篇: HTMLParser的filter访问方式详解
下一篇: web过滤敏感词
技术宝哥
博客等级 码龄16年 331粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值