HTMLParser使用详解(1)- 初始化Parser
//Parser parser = new Parser( szContent );
Parser parser = new Parser( (HttpURLConnection) (new URL("http://127.0.0.1:8080/HTMLParserTester.html")).openConnection() ); TextExtractingVisitor visitor = new TextExtractingVisitor(); parser.visitAllNodesWith(visitor); String textInPage = visitor.getExtractedText(); message(textInPage); } catch( Exception e ) { } }}加重的部分测试了几种不同的初始化方法,后面的显示了结果。大家看到能Parser出内容就可以了,如何操作访问Parser的内容我们在后面讨论。
发布日期:2021-10-17 16:08:16
浏览次数:2
分类:技术文章
本文共 2730 字,大约阅读时间需要 9 分钟。
在研究搜索引擎的开发中,对于HTML网页的处理是核心的一个环节。网上有很多开源的代码,对于Java来说,HTMLParser是比较著名并且得到广泛应用的一个。HTMLParser的主页是http://htmlparser.sourceforge.net/,最后的更新是2006年9月的1.6版。不过没关系,HTML的内容已经很久没有大的变化了,HTMLParser处理起来基本没有任何问题。HTMLParser具有小巧,快速的优点,缺点是相关文档比较少(英文的也少),很多功能需要自己摸索。对于初学者还是要费一些功夫的,而一旦上手以后,会发现HTMLParser的结构设计很巧妙,非常实用,基本你的各种需求都可以满足。
这里我根据自己这几个月来的经验,写了一点入门的东西,希望能对新学习HTMLParser的朋友们有所帮助。(不过当年高考本人语文只比及格高一分,所以文法方面的问题还希望大家多多担待) HTMLParser的核心模块是org.htmlparser.Parser类,这个类实际完成了对于HTML页面的分析工作。这个类有下面几个构造函数: public Parser (); public Parser (Lexer lexer, ParserFeedback fb); public Parser (URLConnection connection, ParserFeedback fb) throws ParserException; public Parser (String resource, ParserFeedback feedback) throws ParserException; public Parser (String resource) throws ParserException; public Parser (Lexer lexer); public Parser (URLConnection connection) throws ParserException; 和一个静态类 public static Parser createParser (String html, String charset); 对于大多数使用者来说,使用最多的是通过一个URLConnection或者一个保存有网页内容的字符串来初始化Parser,或者使用静态函数来生成一个Parser对象。ParserFeedback的代码很简单,是针对调试和跟踪分析过程的,一般不需要改变。而使用Lexer则是一个相对比较高级的话题,放到以后再讨论吧。 这里比较有趣的一点是,如果需要设置页面的编码方式的话,不使用Lexer就只有静态函数一个方法了。对于大多数中文页面来说,好像这是应该用得比较多的一个方法。 下面是初始化Parser的例子。/** * @author www.baizeju.com */package com.baizeju.htmlparsertester;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.FileInputStream;import java.io.File;import java.net.HttpURLConnection;import java.net.URL;import org.htmlparser.visitors.TextExtractingVisitor;import org.htmlparser.Parser; /** * @author www.baizeju.com */public class Main { private static String ENCODE = "GBK"; private static void message( String szMsg ) { try{ System.out.println(new String(szMsg.getBytes(ENCODE), System.getProperty("file.encoding"))); } catch(Exception e ){} } public static String openFile( String szFileName ) { try { BufferedReader bis = new BufferedReader(new InputStreamReader(new FileInputStream( new File(szFileName)), ENCODE) ); String szContent=""; String szTemp; while ( (szTemp = bis.readLine()) != null) { szContent+=szTemp+"/n"; } bis.close(); return szContent; } catch( Exception e ) { return ""; } } public static void main(String[] args) { String szContent = openFile( "E:/My Sites/HTMLParserTester.html"); try{ //Parser parser = Parser.createParser(szContent, ENCODE);//Parser parser = new Parser( szContent );
Parser parser = new Parser( (HttpURLConnection) (new URL("http://127.0.0.1:8080/HTMLParserTester.html")).openConnection() ); TextExtractingVisitor visitor = new TextExtractingVisitor(); parser.visitAllNodesWith(visitor); String textInPage = visitor.getExtractedText(); message(textInPage); } catch( Exception e ) { } }}加重的部分测试了几种不同的初始化方法,后面的显示了结果。大家看到能Parser出内容就可以了,如何操作访问Parser的内容我们在后面讨论。
转载地址:https://blog.csdn.net/thamsyangsw/article/details/4448797 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月01日 07时15分40秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
错过了 Ignite ?没关系!微软秋季技术课堂强势接档!
2019-04-28
一份微软学习大礼包,速领!
2019-04-28
云原生火爆技术人朋友圈,你可别云里雾里了!
2019-04-28
Azure 服务月度更新盘点 | 九月
2019-04-28
Azure Databricks :链接数据科学与企业AI工具的最佳桥梁
2019-04-28
服务器宕机,我为什么一点也不慌?
2019-04-28
传统IT 向云迁移的实践指南
2019-04-28
云基础架构采用者避坑指南:拥抱“云”,更懂“云”
2019-04-28
微软爱开发者 | 十月,“拾月”, 异彩纷呈的社区活动在召唤您
2019-04-28
发布两个多月,Microsoft Teams 工作台迎来哪些里程碑式的进展?
2019-04-28
云游全域应用,手握这张“身份证”就够了!
2019-04-28
《人工智能成熟度调研》:AI 的下一个三年计划
2019-04-28
Azure 服务月度更新盘点 | 十一月
2019-04-28
解密 Teams 隐藏彩蛋 带你玩转海量应用!
2019-04-28
面对PB级云存储,如何快速找到你的文件
2019-04-28
软件定义计算 | Azure Stack HCI到底有多犀利?
2019-04-28
化繁为简,微软 Desktop Flow(“RPA”)正式在华商用!
2019-04-28
跨境电商机遇爆发,时下应该怎么“玩”?
2019-04-28
Azure Databricks大数据构建营 | 小试牛刀,顺利搞定流计算
2019-04-28
最佳实践 | Azure Log Analytics Agent 排错答题思路
2019-04-28