欢迎来到天天文库
浏览记录
ID:51493134
大小:231.67 KB
页数:4页
时间:2020-03-25
《使用Java编程解析Web页面.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、万方数据2004年第7期计算机系统应用使用JaVa编程解析Web页面ParsingWebF'ageD0cumentwithJaVaProlgramming刘遵雄(西安交通大学网络所710049、南昌华东交通大学电气学院330013)聂国星(南昌华东交通大学网络所710049)摘要:本文研究并探讨了使用Java的Swlng包编程解析Web页的关键技术,并提供了具体的解决实例和实现中以及要注意的问题,实现了web信息的提取。关犍词:Java编程HTML文件解析技术1引言在当今网络环境下,解析HTML文档的工作
2、时刻在进行着。我们总是使用某个搜索引擎在互联网这个巨量信息库里检索信息,如GoogIe和Yahoo等,提高了工作效率。我们之所以能够享受搜索引擎带来的方便快捷,是与一种可称为网络蜘蛛(Spider)的软件使用分不开的,运行的Spi—der不断在网上通过链接巡游,并且对访问的HTML文档进行解析记录。目前市场上存在一些HTML解析器,有时它们不能很好地满足各自要求,这就要求用户自己进行编程对HTML文档进行解析。Java语言作为一种流行的网络编程工具,在一定程度上提供解析HTML文档的功能。本文以下两部分就
3、使用Java进行HTML解析的主要技术和具体实现过程的主要环节进行了探讨和研究,并给予相应的重点提示。2主要技术2.1使用HTMLEdItorKIt.Parser主要的HTML解析类Parser是HTMLEdltorKit类的内部类,包含在Swing包中。其实一个抽象类,使用它进行工作关键在于将类Parser进行实例化。Java对类Par-ser实行如此包装并没用考虑到外部解析HTML的功能需求,似乎产生了一些负面影响,我们可以使用HTMLEditor_KJt.Parser类实例化的方法,这种唯一的方法是
4、通过重载HTMLEdItorKit类的getParSer方法来实例化HTMLEd—itorK
5、t.Parser对象,从而实现其pubIlc访问性。实现访问Swing的HTML解析器的类HTMLParSer定义文件HTMLParSe.java如下:ImpOrtjavax.swlng.text.htmI.*;PUbI
6、ccaSSHTMLParSeextendsHTMLEditOrKitfpub
7、.cHTMLEditorKit.ParsergetParser(){//返回新的HTMLEditorKIt.Pars
8、er对象retumsu—per.getParser();}}这个类的实例从Reader读取HTML文档,并在文档中寻找五种标签:开始标签、结束标签、空标签、文本和注释,它们涵盖了普通HTML文件的所有重要部分。每次解析器看到这五个标签之~时,它就会调用相应的回调方法,回调方法在javax.swing.text.htmI.HTMLEdltorKit.ParSer-CaIIback类中的定义。为了解析一个HTML文件,用户写一个回应文本和标签的HTMLEditorKlt.ParSe旧aIIback子类,然后传
9、递~个用户子类的实例到HTMLEdltorKit.Parser的parSe方法中,待处理的HTML文件的Reader对象将一同作为参数传递,parSe方法的第三个参数用于指定是否注意文档的字符集,一般取true。,StringReaderr=newStrIngReader(⋯htmIstring-··);HTMLEditOrKit.ParserDarse=newHTMLParse().getParser():Parser.parse(r,callback.true);通过调用HTMLEdItorKlt的g
10、etParser方法来实现Parser对象的实例化,该方法没有公共访问接口,在子类中重载getParSer使之成为公共成员函数。获得了ParSer类,就可以调用其parse方法,parSe方法只是HTMLBdltor-Kit.Parser类的公用方法,所有这些都是在HTMLEdItor.Kjt.ParSe巾aIIback子类的回调方法内部处理的。Parse()只是简单地从Reader中读取数据直到读完整个文档,每次看到标签、注释或者文本,都会调用HTMLEdltorKIt.ParSer-CaIIback实
11、例的相关回调方法。HTMLEditorKit.Parser和HTMLEditorK.t.ParSe旧aIIback实例都是独立阅读器的,P阳cticaIE)cperience实践经验63万方数据计算机系统应用2004年第7期可以解析多个文件,只是调用Parse()多次。对于HTML数据流中的每个种类的标签(tag)都会反复调用caIIback对象。以下讨论ParSe旧aIIback类的结构。2.2使用HTMLEdItorKit
此文档下载收益归作者所有