域名备案网站建设书模板,做诚信通网站,重新建设网站的请示,中国建设银行对公网站在研究搜索引擎的开发中#xff0c;对于HTML网页的处理是核心的一个环节。网上有很多开源的代码#xff0c;对于Java来说#xff0c;HTMLParser是比较著名并且得到广泛应用的一个。HTMLParser的主页是http://htmlparser.sourceforge.net/#xff0c;最后的更新是2006年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) {szContentszTemp/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的内容我们在后面讨论。以上就是HTMLParser使用详解(1)的内容更多相关内容请关注PHP中文网(www.php.cn)本文原创发布php中文网转载请注明出处感谢您的尊重