最近在研究lucene的全文检索,在很多地方需要解析或者说分析Html内容或者Html页面,Lucene本身的演示程序中也提供了一个Html Parser,但是不是纯Java的解决方案.于是到处搜索,在网上找到了一个"HTMLParser".
网址是: http://htmlparser.sourceforge.net ,当前版本为1.5.
下载下来,试用一番,感觉不错,完全能满足lucene解析Html的需求.
过几天贴出lucene进行全文检索的代码.(检索本站的文章等).
试用代码如下,供大家参考:
package com.jscud.test;
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader;
import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.filters.NodeClassFilter; import org.htmlparser.filters.OrFilter; import org.htmlparser.nodes.TextNode; import org.htmlparser.tags.LinkTag; import org.htmlparser.util.NodeList; import org.htmlparser.util.ParserException; import org.htmlparser.visitors.HtmlPage; import org.htmlparser.visitors.TextExtractingVisitor;
import com.jscud.util.LogMan; //一个日志记录类
/** * 演示了Html Parse的应用. * * @author scud http://www.jscud.com */
public class ParseHtmlTest {
public static void main(String[] args) throws Exception { String aFile = "e:/jscud/temp/test.htm";
String content = readTextFile(aFile, "GBK");
test1(content); System.out.println("====================================");
test2(content); System.out.println("====================================");
test3(content); System.out.println("====================================");
test4(content); System.out.println("====================================");
test5(aFile); System.out.println("====================================");
//访问外部资源,相对慢 test5("http://www.jscud.com"); System.out.println("====================================");
}
/** * 读取文件的方式来分析内容. * filePath也可以是一个Url. * * @param resource 文件/Url */ public static void test5(String resource) throws Exception { Parser myParser = new Parser(resource);
//设置编码 myParser.setEncoding("GBK");
HtmlPage visitor = new HtmlPage(myParser);
myParser.visitAllNodesWith(visitor);
String textInPage = visitor.getTitle();
System.out.println(textInPage); }
/** * 按页面方式处理.对一个标准的Html页面,推荐使用此种方式. */ public static void test4(String content) throws Exception { Parser myParser; myParser = Parser.createParser(content, "GBK");
HtmlPage visitor = new HtmlPage(myParser);
myParser.visitAllNodesWith(visitor);
String textInPage = visitor.getTitle();
System.out.println(textInPage); }
/** * 利用Visitor模式解析html页面. * * 小优点:翻译了<>等符号 * 缺点:好多空格,无法提取link * */ public static void test3(String content) throws Exception { Parser myParser; myParser = Parser.createParser(content, "GBK");
TextExtractingVisitor visitor = new TextExtractingVisitor();
[Web开发]IIS下下伪静态html(URL Rewrite)设置方法 [网页制作]什么是XHTML、为什么要使用XHTML [Web开发]XML与HTML在语法上的主要区别详解 [常用软件]网页版权保护专家 HTML Guard [VB.NET程序]压缩 Html [网页制作]浅淡PHP生成HTML的思路 [网页制作]HTML 标签是否匹配检测代码 [网页制作]将 html 转成 ubb代码的小脚本 [网页制作]WEB高手培训班之HTML篇 [网页制作]HTML Form issue
|