内容管理(cms)常常需要将网站频道的摘要(summery)合并到父频道的封面,引入HTML parser,
可以结构化方式操作HTML内容,使网页内容的提取、重构变得容易。
以下链接列出了相关的java opensource项目
http://www.open-open.com/30.htm
根据网友的评论,将htmlcleaner、htmlparser、nekohtml列入候选。
以附件html作为测试用例,按照常见的getElementsByTagName提取Body,
以getElementById获取id为'content6'的script
测试编码如下:
java 代码
- static public String Neko(String path) throws SAXException, IOException{
- DOMParser parser = new DOMParser();
-
- parser.parse(TPPath+path);
- Document doc=parser.getDocument();
- org.w3c.dom.NodeList nl = doc.getElementsByTagName("body");
- System.out.println(printNode(nl.item(0)));
- System.out.println("----------------------------------------");
- org.w3c.dom.Element n = doc.getElementById("content6");
- System.out.println(printNode(n));
- return "";
- }
- static public String htmlparser(String path) throws ParserException{
-
- Parser p = new Parser(TPPath+path);
- NodeList nl=p.parse(new TagNameFilter("body"));
- System.out.println(nl.elementAt(0).toHtml());
- System.out.println("----------------------------------------");
- Parser p2 = new Parser(TPPath+path);
- NodeList nl2=p2.parse(new HasAttributeFilter("id","content6"));
- System.out.println(nl2.elementAt(0).toHtml());
- return "";
- }
- static public String htmlcleaner(String path) throws Exception{
-
- HtmlCleaner cleaner = new HtmlCleaner(new File(TPPath+path));
- org.w3c.dom.Document doc = cleaner.createDOM();
- org.w3c.dom.NodeList nl = doc.getElementsByTagName("body");
- System.out.println(printNode(nl.item(0)));
- System.out.println("----------------------------------------");
- org.w3c.dom.Element n=doc.getElementById("content6");
- System.out.println(printNode(n));
- return "";
- }
一个打印dom节点的辅助方法如下:
java 代码
- public static String printNode(Node node) {
- StringBuffer sbuf=new StringBuffer();
- String nn=node.getNodeName();
- boolean btag=true;
- if(nn.equals("#text")) btag=false;
- if(btag){
- if(node.hasAttributes()){
- NamedNodeMap attrs=node.getAttributes();
- StringBuffer abuf= new StringBuffer();
- for(int i=0,len=attrs.getLength(); i<len; i++){
- Node attr=attrs.item(i);
- abuf.append(" "+attr.getNodeName()+"=\""+attr.getNodeValue()+"\"");
- }
- sbuf.append("<"+nn+abuf.toString()+">");
- }else sbuf.append("<"+nn+">");
- }
- if(node.hasChildNodes()){
- Node child = node.getFirstChild();
- sbuf.append(child.getNodeValue());
- while (child != null) {
- sbuf.append(printNode(child));
- child = child.getNextSibling();
- }
- }
- if(btag)
- sbuf.append("</"+nn+">");
- return sbuf.toString();
- }
测试结果如下:
getElementsByTagName getElementById
htmlcleaner 抛出异常java.lang.NoSuchFieldError: fRecognizedFeatures
htmlparser 在分析到script中的字符串包含"</b>"出现逻辑错误,将该</b>误判为script结束
nekohtml pass pass
nekohtml入选。
分享到:
相关推荐
在给定的"html_parser.zip"压缩包中,我们可以推测包含了一个使用Delphi7或Delphi XE2编写的HTML解析库或者示例代码。Delphi是一种强大的Object Pascal编程环境,常用于开发Windows应用程序。 HTML解析器的核心功能...
`HTML-Parser`是Perl中一个专门用于解析HTML的模块,它使得程序员能够有效地解析和操作HTML文档。 标题中的"HTML-Parser-3.51.rar"表明这是一个关于HTML-Parser 3.51版本的压缩包,通常包含了该模块的源代码、文档...
在这个测试文件中,开发者可能会创建一个包含示例HTML表格的字符串,然后使用`table_parser`类进行解析,验证其功能是否正常。测试通常包括不同场景的覆盖,如空表格、多列数据、带有嵌套表格的复杂结构等。 值得...
Python中的`html5-parser`库是一个高效的HTML5解析器,它使用C语言编写,从而提供了比纯Python解析更快的速度。这个库是为了解决在处理大量HTML数据时,需要快速、准确地解析文档的需求。在Python开发中,尤其是在...
本压缩包"html_parser.rar"包含了一个用Delphi语言编写的HTML解析器,它利用了汇编内联技术来提高性能。Delphi是一种基于Object Pascal的高效能、面向对象的编程语言,常用于开发Windows桌面应用。 在解析HTML时,...
对html进行转换,适用爬虫/小程序富文本显示等;对html进行转换,适用爬虫/小程序富文本显示等对html进行转换,适用爬虫/小程序富文本显示等对html进行转换,适用爬虫/小程序富文本显示等
**前端开源库-html-react-parser** 在前端开发领域,高效地处理HTML字符串并将其转换为React组件是常见的需求。`html-react-parser`就是这样一个强大的开源库,它专门用于将HTML字符串解析成React元素,使得开发者...
enju parser enju parser
而"php-simple-html-dom-parser"是一个PHP库,专门用于处理和解析HTML文档,它提供了类似jQuery的API,使得操作HTML文档变得简单直观。这个包的Laravel版本则将这个强大的解析器集成到Laravel框架中,让开发者可以更...
在IT行业中,HTML解析器广泛应用于网页抓取、数据挖掘、自动化测试等领域。本文将深入探讨如何利用微软IE浏览器的内置解析器——MSHTML库,来创建一个能够解析动态脚本和HTML的自定义解析器。 标题提到的"html ...
html-dom-parser 在服务器(Node.js)和客户端(浏览器)上均可使用HTML到DOM解析器: HTMLDOMParser(string[, options])解析器将HTML字符串转换为描述DOM树JavaScript对象。例子const parse = require ( '...
在自动化测试中,可以模拟浏览器解析HTML,检查页面的结构是否正确。 值得注意的是,gumbo-parser并不直接提供DOM操作的功能,它仅负责解析HTML到DOM树的构建。如果你需要进行DOM操作,可能需要结合其他库(如...
**jericho HTML Parser** 是一个Java库,专门用于解析HTML文档。它被设计用来处理不规范的HTML,即那些在语法上可能不完全符合HTML标准的实际网页。在处理这种复杂性和不可预测性方面,jericho HTML Parser表现出了...
HTML DOM Parser是一款重要的前端开源库,它主要用于将HTML字符串转换为DOM(Document Object Model)对象。DOM是HTML和XML文档的结构化表示,允许开发者通过JavaScript或其他编程语言对文档进行动态操作。这款库的...
HTML解析在IT行业中是一项至关重要的技能,特别是在网页抓取、数据挖掘和自动化测试等领域。`Html_Parser.zip` 是一个第三方的HTML解析库,可能是为了帮助开发者更有效地处理和解析HTML文档。在这个压缩包中,包含了...
Python HTML Parser是一个强大的工具,用于在Python环境中解析HTML和XML文档。这个库使得开发者能够方便地提取和操作网页上的数据,特别是在进行网络爬虫或数据挖掘项目时非常有用。本篇将详细介绍Python中的...