htmlparser详解

【Python】HTMLParser:HTML解析 创建自定义解析器类,继承HTMLParserfrom html . parser import HTMLParser # 创建自定义解析器类,继承HTMLParser class MyHTMLParser(HTMLParser) : def handle_starttag(self , tag , attrs) : print(f"Start tag: { 阅读详情

本文转自 http://jackyrong.javaeye.com/blog/692456 ,供大家啊学习研究

htmlparser是个优秀的网页信息抓取工具,下面小结其一些基本的用法:

1 创建parser对象,有两种方式
  Parser parser=new Parser(String html)
  传入的html
  第2种为:
   //通过指定URLConnection对象创建Parser对象
  Parser parser = new Parser((HttpURLConnection)(new URL(url)).openConnection());
之后就可以进行访问parser中解析好的内容了
2 解析时,有两类方式,visitor方式和filter过滤方式,vistior方式需要遍历每一个节点,
而filter方式则是过滤。

3 visitor方式的例子;
   try{
//通过指定URLConnection对象创建Parser对象
Parser parser = new Parser((HttpURLConnection)(new URL(url)).openConnection());
//设置Parser对象的字符编码,一般与网页的字符编码保持一致
        parser.setEncoding("GB2312");
        //创建LinkFindingVisitor对象
        LinkFindingVisitor lvisitor = new LinkFindingVisitor("http://news.qq.com/");
        //查找http://www.qq.com的链接个数
        parser.visitAllNodesWith(lvisitor);
        System.out.println("网页中包含http://news.qq.com/的链接个数:"+lvisitor.getCount());
}catch(Exception ex){
ex.printStackTrace();
}

      /** TextExtractingVisitor类的用法举例 */
public static void testTextExtractingVisitor(String url){
try{
//通过指定URLConnection对象创建Parser对象
Parser parser = new Parser((HttpURLConnection)(new URL(url)).openConnection());
//设置Parser对象的字符编码,一般与网页的字符编码保持一致
        parser.setEncoding("GB2312");
        //创建StringFindingVisitor对象
        TextExtractingVisitor visitor = new TextExtractingVisitor();
        //去除网页中的所有标签,提出纯文本内容
        parser.visitAllNodesWith(visitor);
        System.out.println("网页的纯文本内容为:"+visitor.getExtractedText());
}catch(Exception ex){
ex.printStackTrace();
}
}



4 还可以自定义nodevisitor来扩展nodevisitor,重载其中的各方法:
  /** 自定义NodeVisitor子类,并重载抽象类NodeVisitor中的相关方法 */
public class MyNodeVisitor extends NodeVisitor {

/** 重载抽象类NodeVisitor的beginParsing方法,解析开始时调用此方法 */
public void beginParsing(){
System.out.println("开始解析HTML内容......");
}

/** 重载抽象类NodeVisitor的finishedParsing方法,解析结束时调用此方法 */
public void finishedParsing(){
System.out.println("整个HTML内容解析完毕!");
}

/** 重载抽象类NodeVisitor的visitTag方法,遇到开始标签时调用此方法 */
public void visitTag(Tag tag){
System.out.println("开始当前标签: "+tag.getText());
}

/** 重载抽象类NodeVisitor的visitEndTag方法,遇到结束标签时调用此方法 */
public void visitEndTag(Tag tag){
System.out.println("结束当前标签: "+tag.getText());
}

/** 重载抽象类NodeVisitor的visitStringNode方法,遇到文本节点时调用此方法 */
public void visitStringNode(Text string){
System.out.println("当前文本节点: "+string);
}

/** 重载抽象类NodeVisitor的visitRemarkNode方法,遇到注释时调用此方法 */
public void visitRemarkNode(Remark remark){
System.out.println("当前注释: "+remark);
}

5 使用filter方式过滤
  基本用法:
   TagNameFilter类用法
   //通过指定URLConnection对象创建Parser对象
Parser parser = new Parser((HttpURLConnection)(new URL(url)).openConnection());
        //设置Parser对象的字符编码,一般与网页的字符编码保持一致
parser.setEncoding("GB2312");
            //创建TagNameFilter实例
            NodeFilter filter = new TagNameFilter ("DIV");
            //筛选出所有DIV标签节点
            NodeList nodes = parser.extractAllNodesThatMatch(filter);
            if(nodes!=null) {
                for (int i = 0; i < nodes.size(); i++) {
                    Node textnode = (Node) nodes.elementAt(i);                   
                    System.out.println("当前DIV:"+textnode.getText());
                }

   AndFilter类用法
    //通过指定URLConnection对象创建Parser对象
Parser parser = new Parser((HttpURLConnection)(new URL(url)).openConnection());
        //设置Parser对象的字符编码,一般与网页的字符编码保持一致
parser.setEncoding("GB2312");
            //创建HasAttributeFilter实例
        NodeFilter filter1 = new HasAttributeFilter("id");
        //创建TagNameFilter实例
        NodeFilter innerFilter = new TagNameFilter ("DIV");
        //创建HasChildFilter实例
        NodeFilter filter2 = new HasChildFilter(innerFilter);
        //创建AndFilter实例
        NodeFilter filter = new AndFilter(filter1, filter2);
        //筛选出所有具有id属性且拥有子节点的所有DIV节点
        NodeList nodes = parser.extractAllNodesThatMatch(filter);
            if(nodes!=null) {
                for (int i = 0; i < nodes.size(); i++) {
                    Node textnode = (Node) nodes.elementAt(i);                   
                    System.out.println("当前DIV:"+textnode.getText());
                }
            }      
StringFilter类用法:
  //通过指定URLConnection对象创建Parser对象
Parser parser = new Parser((HttpURLConnection)(new URL(url)).openConnection());
        //设置Parser对象的字符编码,一般与网页的字符编码保持一致
parser.setEncoding("GB2312");
//创建StringFilter实例
        NodeFilter filter = new StringFilter("陈水扁");
        //筛选出所有包含"陈水扁"字符串的所有文本节点
        NodeList nodes = parser.extractAllNodesThatMatch(filter);
            if(nodes!=null) {
                for (int i = 0; i < nodes.size(); i++) {
                    Node textnode = (Node) nodes.elementAt(i);                   
                    System.out.println("包含/"陈水扁/"字符串的文本节点:"+textnode.getText());
                }
            }  

python:html.parser --- 简单的 HTML 和 XHTML 解析器 阅读详情

相关推荐

TI MSPM0G3507 循迹小车强制寻黑线代码一

一个基于MSPM0微控制器的循迹小车控制系统。系统通过8路循迹传感器检测黑线位置偏差,使用PID算法计算电机控制量。主程序初始化中断、PWM等外设,在按键触发后进入循迹模式。传感器数据处理函数根据检测到的黑线位置返回偏差值(-7到7),PID控制器根据偏差调整左右电机速度。系统还包含限幅处理、中断服务等模块,实现稳定的自动循迹功能。代码结构清晰,展示了嵌入式系统中传感器数据处理、电机控制和PID算法的典型实现方式。

雾削木的优快云博客 1855

python中html.parser_python模块之HTMLParser简介

html.parser是一个非常简单和实用的库,它的核心是HTMLParser类。工作的流程是:当你feed给它一个类似HTML格式的字符串时,它会调用goahead方法向前迭代各个标签,并调用对应的parse_xxxx方法提取start_tag, tag, attrs data comment和end_tag等等标签信息和数据,然后调用对应的方法对这些抽取出来的内容进行处理。整个HTMLPars...

weixin_35385921的博客 7737

如何使用3D高斯分布进行环境建模

使用3D高斯分布来进行建模,关键在于通过引入不确定性描述来提高建图的鲁棒性和精度。与传统点云表示相比,3D高斯分布提供了一种更为灵活和有效的方式来处理空间数据,能够通过协方差矩阵表示点的空间不确定性,帮助优化SLAM过程中的定位和地图更新。

JaydenQ的博客 2355

网络爬虫——HTMLParser解析HTML

HTMLParser 也是一款非常高效的 HTML 解析器,其支持 CSS 选择器提取 HTML中的节点。HTMLParser 的版本已不再更新,但并不影响其使用。

吴声子夜歌的博客 3049

Win本地部署DeepSeek

Ollama 提供了简单的接口,用于创建、运行和管理这些模型,同时还维护了一个丰富的预构建模型库,可以轻松集成到各种应用程序中。重启ollama,具体操作为打开搜索ollama进程,将其结束进程,之后再执行相关模型下载命令即可,或重启电脑!Ollama支持多种DeepSeek模型版本,用户可以根据硬件配置选择合适的模型。配置添加系统环境变量OLLAMA_MODELS,设置其值为新的路径,点击确定应用。安装完成后,在终端输入以下命令,检查Ollama版本。:14B、32B或70B版本,适合高端GPU。

m0_67297673的博客 2386

手持式激光测距仪全套方案

激光测距全套方案,包括原理图、源代码、PCB、BOM、光学部分资料,结构、特殊元件数据手册及供应商联系方式,提供调试技术文档。全套方案已成功打板验证,实现0.05~50m测量范围,精度在+/—1.5mm,激光波长635~650nm,功率《1mW。方案预留了TTL串口、RS485接口,可通过串口助手看到测量数据,可自行DIY或者商业开发。无论是电路小白,还是技术大拿,都能通过方案资料成功做出一套激光测距仪。

Laser01的博客 2055

python之htmlParser入门教程

来源 《TextProcessing in Python》  和python官方  tutorial  HTMLParser.HTMLParser() htmlParser模块包含了类HTMLParser  这个类本身很有用.因为当产生事件时,本身并不做任何工作。对HTMLParser.HTMLParser() 的利用需要实现其子类,并且编写处理你感兴趣事件的方法 这里插入一段来

萧萧的专栏 1万+

【量化入门】Tushare库获取公募基金的历史净值

在本文中,我们将介绍如何使用Python的Tushare库获取公募基金的历史净值。

木头大左的博客 1140

HTMLParser使用详解

HTMLParser 使用详解 HTMLParser 具有小巧,快速的优点,缺点是相关文档比较少(英文的也少),很多功能需要自己摸索。对于初学者还是要费一些功夫的,而一旦上手以后,会发现 HTMLParser 的结构设计很巧妙,非常实用,基本你的各种需求都可以满足。

从最底层做起的人 1162

智能水下机器人设计: 基于MATLAB的水下机器人动力学建模和控制系统设计,包括水下环境感知、路径规划和任务执行等

智能水下机器人是指能够在水下自主完成各种任务的机器人,例如探测、勘察、救援等。它具有广阔的应用前景,可用于海洋环境监测、水下考古、海上作业等领域。基于MATLAB的水下机器人设计可以为科研人员和工程师提供强大的建模和仿真工具,帮助他们设计更智能、更高效的水下机器人。智能水下机器人是未来海洋科技发展的重要方向,它将为海洋科学研究、水下考古和海上作业等领域带来新的机遇。MATLAB是一种功能强大的数学和科学计算软件,它可以为智能水下机器人设计提供强大的工具和支持。

走向CTO的路上... 958

随机优化 (Stochastic Optimization) 算法详解及案例分析

随机优化是一种用于处理包含随机变量的优化问题的方法。其目标是通过考虑随机变量的概率分布,找到一个在期望意义下最优的解。

闲人编程的博客 4173

HtmlParser使用教程详解

HTMLParser具有小巧,快速的优点,缺点是相关文档比较少(英文的也少),很多功能需要自己摸索。对于初学者还是要费一些功夫的,而一旦上手以后,会发现HTMLParser的结构设计很巧妙,非常实用,基本你的各种需求都可以满足。     这里我根据自己这几个月来的经验,写了一点入门的东西,希望能对新学习HTMLParser的朋友们有所帮助。(不过当年高考本人语文只比及格高一分,所以文法方面的问题

morningsun1990的专栏 1424

使用Everything清理垃圾文件的实战方案(持续更新)

本文主要介绍了使用Everything清理垃圾文件的实战方案,希望能对同学们有所帮助。 文章目录 1. Everything工作原理简述 2. Everything实战清理垃圾文件 2.1 清理应用无用文件 2.2 清理无用但遗忘的文件 2.3 使用Python代码自动化删除重复文件

weixin_43178406的博客 2万+

htmlparser使用详解

在研究搜索引擎的开发中,对于HTML网页的处理是核心的一个环节。网上有很多开源的代码,对于Java来说,HTMLParser是比较著名并且得到广 泛应用的一个。HTMLParser的主页是http://htmlparser.sourceforge.net/,最后的更新是2006年9月的 1.6版。不过没关系,HTML的内容已经很久没有大的变化了,HTMLParser处理起来基本没有任何问题。H

Marcnuth's 1327

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

HTMLParser 使用详解

简介   htmlparser是一个纯的java写的html解析的库,它不依赖于其它的java库文件,主要用于改造或     提取html。它能超高速解析html,而且不会出错。现在htmlparser最新版本为2.0。     毫不夸张地说,htmlparser就是目前最好的html解析和分析的工具。     无论你是想抓取网页数据还是改造html的内容,用了htmlparse...

weixin_33721427的博客 207

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

HTMLParser模块详解

使用HTMLParser模块解析HTML页面     HTMLParser是python用来解析html和xhtml文件格式的模块。它可以分析出html里面的标签、数据等等,是一种处理html的简便途径。HTMLParser采用的是一种事件驱动的模式,当HTMLParser找到一个特定的标记时,它会去调用一个用户定义的函数,以此来通知程序处理。它主要的回调函数的命名都是以hand

markximu的专栏 966

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java htmlparser 使用教程_HTMLParser使用详解(1)

在研究搜索引擎的开发中,对于HTML网页的处理是核心的一个环节。网上有很多开源的代码,对于Java来说,HTMLParser是比较著名并且得到广泛应用的一个。HTMLParser的主页是http://htmlparser.sourceforge.net/,最后的更新是2006年9月的1.6版。不过没关系,HTML的内容已经很久没有大的变化了,HTMLParser处理起来基本没有任何问题。HTMLP...

weixin_30970539的博客 773

HTMLParser使用详解(3)

HTMLParser遍历了网页的内容以后,以树(森林)结构保存了结果。HTMLParser访问结果内容的方法有两种。使用Filter和使用Visitor。(一)Filter类顾名思义,Filter就是对于结果进行过滤,取得需要的内容。HTMLParser在org.htmlparser.filters包之内一共定义了16个不同的Filter,也可以分为几类。判断类Filter:TagNameFilt

fengbolaisearch的专栏 1215

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解析html详解

HTMLParser具有小巧,快速的优点,缺点是相关文档比较少(英文的也少),很多功能需要自己摸索。对于初学者还是要费一些功夫的,而一旦上手以后,会发现HTMLParser的结构设计很巧妙,非常实用,基本你的各种需求都可以满足。    这里我根据自己这几个月来的经验,写了一点入门的东西,希望能对新学习HTMLParser的朋友们有所帮助。(不过当年高考本人语文只比及格高一分,所以文法方面的问题还希望

a639735331的博客 924

java htmlparser 使用教程_Java解析HTML之HTMLParser使用与详解

HTMLParser将解析过的信息保存为一个树的结构。Node是信息保存的数据类型基础。请看Node的定义:public interface Node extends Cloneable;Node中包含的方法有几类:对于树型结构进行遍历的函数,这些函数最容易理解:NodegetParent():取得父节点NodeListgetChildren():取得子节点的列表NodegetFirstChild...

weixin_39873191的博客 220

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

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

weixin_39652869的博客 275
上一篇: lucence小例子-注释详解
下一篇: HTMLParser的filter访问方式详解
技术宝哥
博客等级 码龄16年 331粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值