- 浏览: 3552564 次
- 性别:
- 来自: 大连
博客专栏
-
使用Titanium Mo...
浏览量:38217
-
Cordova 3.x入门...
浏览量:607592
-
常用Java开源Libra...
浏览量:682774
-
搭建 CentOS 6 服...
浏览量:89527
-
Spring Boot 入...
浏览量:402129
-
基于Spring Secu...
浏览量:69760
-
MQTT入门
浏览量:91835
文章分类
最新评论
-
afateg:
阿里云的图是怎么画出来的?用什么工具?
各云服务平台的架构图 -
cbn_1992:
博主,采用jdbctoken也就是数据库形式之后,反复点击获取 ...
Spring Security OAuth2 Provider 之 数据库存储 -
ipodao:
写的很是清楚了,我找到一份中文协议:https://mcxia ...
MQTT入门(6)- 主题Topics -
Cavani_cc:
还行
MQTT入门(6)- 主题Topics -
fexiong:
博主,能否提供完整源码用于学习?邮箱:2199611997@q ...
TensorFlow 之 构建人物识别系统
NekoHTML是一个简单地HTML扫描器和标签补偿器(tag balancer),使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能投扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档过程中常犯的错误。NekoHTML能增补缺失的父元素、自动用结束标签关闭相应的元素,以及不匹配的内嵌元素标签。NekoHTML的开发使用了Xerces Native Interface (XNI),后者是Xerces2的实现基础。
http://nekohtml.sourceforge.net/
http://xerces.apache.org/xerces2-j/
版本:nekohtml_1.9.15.jar xerces-2.9.1
1、获取元素内容
http://www.sina.com.cn www.sina.com.cn
http://www.sohu.com www.sohu.com
http://www.163.com www.163.com
http://www.qq.com www.qq.com
2、使用XPathAPI
a1
a2
a3
b1
b2
b3
c1
c2
c3
http://www.aaa.com/ aaa
http://www.bbb.com/ bbb
http://www.ccc.com/ ccc
3、设置Filter
<TITLE>test3</TITLE>
<!-- Link -->
<A href="http://www.aaa.com/">aaa</A>
<A href="http://www.bbb.com/">bbb</A>
<A href="http://www.ccc.com/">ccc</A>
4、补充修正
<HTML><HEAD></HEAD><BODY><A href="http://www.aaa.com/">aaa
</A><A href="http://www.bbb.com/">bbb
</A><A href="http://www.ccc.com/">ccc</A></BODY></HTML>
<A href="http://www.aaa.com/">aaa
<A href="http://www.bbb.com/">bbb
<A href="http://www.ccc.com/">ccc
5、DOMFragmentParser
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>test2</TITLE>
</HEAD>
<BODY>
<H1>Page Title</H1>
<!-- Table -->
<TABLE>
<TBODY>
<TR>
<TD>a1</TD><TD>a2</TD><TD>a3</TD>
</TR>
<TR>
<TD>b1</TD><TD>b2</TD><TD>b3</TD>
</TR>
<TR>
<TD>c1</TD><TD>c2</TD><TD>c3</TD>
</TR>
</TBODY>
</TABLE>
</BODY>
</HTML>
引用
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。
http://nekohtml.sourceforge.net/
http://xerces.apache.org/xerces2-j/
版本:nekohtml_1.9.15.jar xerces-2.9.1
1、获取元素内容
//创建一个解析器 DOMParser parser = new DOMParser(); //解析HTML文件 parser.parse("html/test1.html"); //获取解析后的DOM树 Document document = parser.getDocument(); //通过getElementsByTagName获取Node NodeList nodeList = document.getElementsByTagName("a"); for (int i = 0; i < nodeList.getLength(); i++) { Element e = (Element)nodeList.item(i); System.out.print(e.getAttribute("href") + "\t"); System.out.println(e.getTextContent()); }
<html> <head><title>test1</title></head> <body> <a href="http://www.sina.com.cn">www.sina.com.cn</a><br> <a href="http://www.sohu.com">www.sohu.com</a><br> <a href="http://www.163.com" name="test">www.163.com</a><br> <a href="http://www.qq.com">www.qq.com</a><br> </body> </html>
引用
http://www.sina.com.cn www.sina.com.cn
http://www.sohu.com www.sohu.com
http://www.163.com www.163.com
http://www.qq.com www.qq.com
2、使用XPathAPI
DOMParser parser = new DOMParser(); parser.parse("html/test2.html"); Node node = parser.getDocument(); //获取所有<td>内容 //****注意在查找是必须使用大写字母的tag名(NekoHTML默认将HTML的tag名都转成了大写,属性名变为小写) NodeList nodeList = XPathAPI.selectNodeList(node, "//TD"); for (int i = 0; i < nodeList.getLength(); i++) { System.out.println(nodeList.item(i).getTextContent()); } //获取所有<a>内容 NodeList nodeList2 = XPathAPI.selectNodeList(node, "//A"); for (int i = 0; i < nodeList2.getLength(); i++) { Element e = (Element) nodeList2.item(i); System.out.print(e.getAttribute("href") + "\t"); System.out.println(e.getTextContent()); }
<html> <head><title>test2</title></head> <body> <h1>Page Title</h1> <!-- Table --> <table> <tr> <td>a1</td> <td>a2</td> <td>a3</td> </tr> <tr> <td>b1</td> <td>b2</td> <td>b3</td> </tr> <tr> <td>c1</td> <td>c2</td> <td>c3</td> </tr> </table> <!-- Link --> <a href="http://www.aaa.com/">aaa</a> <a href="http://www.bbb.com/">bbb</a> <a href="http://www.ccc.com/">ccc</a> </body> </html>
引用
a1
a2
a3
b1
b2
b3
c1
c2
c3
http://www.aaa.com/ aaa
http://www.bbb.com/ bbb
http://www.ccc.com/ ccc
3、设置Filter
//生成ElementRemover(默认会不输出所有的Tag名) ElementRemover remover = new ElementRemover(); //设置输出的Tag名及其属性 remover.acceptElement("title", null); remover.acceptElement("a", new String[]{"href"}); //删除Tag remover.removeElement("script"); //生成StringWriter StringWriter filteredDescription = new StringWriter(); Writer writer = new Writer(filteredDescription, null); //设置Filter XMLDocumentFilter[] filters = { remover, writer }; DOMParser parser = new DOMParser(); parser.setProperty("http://cyberneko.org/html/properties/filters", filters); parser.parse("html/test3.html"); //获取结果 String description = filteredDescription.toString(); System.out.println(description);
<html> <head> <title>test3</title> <script src="http://www.iteye.com/javascripts/application.js" type="text/javascript"></script> </head> <body> <!-- Link --> <a href="http://www.aaa.com/">aaa</a> <a href="http://www.bbb.com/">bbb</a> <a href="http://www.ccc.com/">ccc</a> </body> </html>
引用
<TITLE>test3</TITLE>
<!-- Link -->
<A href="http://www.aaa.com/">aaa</A>
<A href="http://www.bbb.com/">bbb</A>
<A href="http://www.ccc.com/">ccc</A>
4、补充修正
//补充修正 StringWriter filteredDescription1 = new StringWriter(); Writer writer1 = new Writer(filteredDescription1, null); XMLDocumentFilter[] filters1 = { writer1 }; DOMParser parser1 = new DOMParser(); parser1.setProperty("http://cyberneko.org/html/properties/filters", filters1); parser1.parse("html/test4.html"); System.out.println(filteredDescription1.toString()); System.out.println(); //不补充修正 StringWriter filteredDescription2 = new StringWriter(); Writer writer2 = new Writer(filteredDescription2, null); XMLDocumentFilter[] filters2 = { writer2 }; DOMParser parser2 = new DOMParser(); parser2.setProperty("http://cyberneko.org/html/properties/filters", filters2); //默认为true parser2.setFeature("http://cyberneko.org/html/features/balance-tags",false); parser2.parse("html/test4.html"); System.out.println(filteredDescription2.toString()); System.out.println(); //nekohtml功能(feature)列表 //属性 默认值 值域 描述 //http://cyberneko.org/html/features/balance-tags True 是否允许增补缺失的标签。如果要以XML方式操作HTML文件,此值必须为真。此处提供设置功能,为了性能的原因。 //http://cyberneko.org/html/features/balance-tags/ignore-outside-content False 是否忽略文档根元素以后的数据。如果为false,<html>和<bod>被忽略,所有的内容都被解析。 //http://cyberneko.org/html/features/document-fragment False 解析HTML片段时是否作标签增补。此功能不要用在DOMParser上,而要用在DOMFragmentParser上。 //http://apache.org/xml/features/scanner/notify-char-refs False 当遇到字符实体引用(如&#x20;)是否将(#x20)报告给相应地文档处理器。 //http://apache.org/xml/features/scanner/notify-builtin-refs False 当遇到XML内建的字符实体引用(如&amp;)是否将(amp)报告给相应地文档处理器。 //http://cyberneko.org/html/features/scanner/notify-builtin-refs False 当遇到HTML内建的字符实体引用(如&copy;)是否将(copy)报告给相应地文档处理器。 //http://cyberneko.org/html/features/scanner/script/strip-comment-delims False 是否剥掉<script>元素中的<!-- -->等注释符。 //http://cyberneko.org/html/features/augmentations False 是否将与HTML事件有关的infoset项包括在解析管道中。 //http://cyberneko.org/html/features/report-errors False 是否报告错误。 //nekohtml属性列表 //属性 默认值 值域 描述 //http://cyberneko.org/html/properties/filters null XMLDocumentFilter[] 在解析管道的最后按数组顺序追加自定义的处理组件(过滤器),必须为数组类型。 //http://cyberneko.org/html/properties/default-encoding Windows-1252 IANA encoding names 默认的HTML文件编码 //http://cyberneko.org/html/properties/names/elems 默认为upper upper,lower,match 如果整理识别出的元素名称 //http://cyberneko.org/html/properties/names/attrs 默认为lower upper,lower,no-change 如果整理识别出的属性名称
<a href="http://www.aaa.com/">aaa <a href="http://www.bbb.com/">bbb <a href="http://www.ccc.com/">ccc
引用
<HTML><HEAD></HEAD><BODY><A href="http://www.aaa.com/">aaa
</A><A href="http://www.bbb.com/">bbb
</A><A href="http://www.ccc.com/">ccc</A></BODY></HTML>
<A href="http://www.aaa.com/">aaa
<A href="http://www.bbb.com/">bbb
<A href="http://www.ccc.com/">ccc
5、DOMFragmentParser
DOMFragmentParser parser = new DOMFragmentParser(); HTMLDocument document = new HTMLDocumentImpl(); DocumentFragment fragment = document.createDocumentFragment(); parser.parse("html/test5.html", fragment); TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer(); transformer.transform(new DOMSource(fragment), new StreamResult(new OutputStreamWriter(System.out, "utf-8")));
<html><head><title>test2</title></head><body><h1>Page Title</h1><!-- Table --><table><tr><td>a1</td><td>a2</td><td>a3</td></tr><tr><td>b1</td><td>b2</td><td>b3</td></tr><tr><td>c1</td><td>c2</td><td>c3</td></tr></table></body></html>
引用
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>test2</TITLE>
</HEAD>
<BODY>
<H1>Page Title</H1>
<!-- Table -->
<TABLE>
<TBODY>
<TR>
<TD>a1</TD><TD>a2</TD><TD>a3</TD>
</TR>
<TR>
<TD>b1</TD><TD>b2</TD><TD>b3</TD>
</TR>
<TR>
<TD>c1</TD><TD>c2</TD><TD>c3</TD>
</TR>
</TBODY>
</TABLE>
</BODY>
</HTML>
- NekoHTMLTest.rar (1.3 MB)
- 下载次数: 243
发表评论
-
Web API分页
2018-11-13 13:38 1574(一)分页类型 逻辑分页(客户端分页):从数据库将所有记录查询 ... -
JAXB实例入门
2017-06-09 10:17 1796JAXB(Java Architecture for XML ... -
Java Web项目中的Event
2017-06-05 09:42 1688(1)Servlet的事件和监听器 *** Servle ... -
关于Java SPI
2017-05-04 12:07 2050SPI:Service Provider Interface ... -
Jackson实例入门
2017-05-03 12:55 1722Jackson:Java平台的JSON解析器。 版本: ja ... -
为什么https被redirect成了http?
2016-11-14 09:35 7900全站HTTPS并不是配置证书CA,改改路径URL那么简单! ... -
简化Java代码
2016-10-09 11:25 1319样板代码Boilerplate Code的 ... -
Java Web Project based on Spring
2016-09-28 11:21 1045基于Spring开发Web项目的标配Library。 工具 ... -
Eclipse Scrapbook快速测试Java代码
2016-09-09 15:12 1336Scrapbook是Eclipse提供的特 ... -
Java爬取 百度图片&Google图片&Bing图片
2016-08-04 09:54 7631先看看抓取的结果。 抓关键字“美女”的百度图片: 抓关键字 ... -
学习Java容易混淆的一概念
2016-05-13 11:01 1702基础篇 (1)== vs equals() ... -
20年Java发展历程(1995-2015)
2015-03-25 21:58 2418Java语言作为现在最流行的编程语言之一,它已经经历了整整20 ... -
Java命令行选项解析之Commons-CLI & Args4J & JCommander
2014-11-27 12:09 22585熟悉Linux命令的都知道几乎所有程序都会提供一些命令行选项。 ... -
Java调用Native API之JNA
2014-11-10 12:09 7841Java调用C/C++的Native API一般采用JNI(J ... -
Java执行SSH/SCP之JSch
2014-08-27 17:17 11591JSch (Java Secure Channel)是纯Jav ... -
GC日志分析
2014-07-18 08:54 2876GC:Garbage Collection 垃圾回收 (1) ... -
Java元组类型之javatuples
2014-05-20 10:58 27085关于方法的返回值,经常需要返回2个值或多个值的一个序列,比如数 ... -
Java 8 之 反编译Lambda表达式(CFR)
2014-04-14 09:34 6591CFR(Class File Reader) - anoth ... -
Java 8 之 Optional类
2014-04-08 14:38 2991在Java中,null代表一个不存在的对象,如果对它进行操作就 ... -
Java 8 之 Lambda表达式
2014-04-01 09:14 16218Java 8历时2年8个月,这次升级是继Java 5之后对Ja ...
相关推荐
在提供的`Neko.java`和`Caipiao.java`源代码中,很可能展示了如何使用这个库来解析HTML文档。 `Caipiao.java`可能是一个示例程序,它展示了如何读取和解析名为`caipiao.html`的彩票数据文件。在这个文件中,开发者...
博客链接中提到的是作者Tivonhou在iteye上的博客文章,虽然具体内容无法查看,但通常这类文章可能会涵盖如何使用NekoHtml解析HTML文件、解决常见问题、优化性能,以及与其他解析库对比等方面的知识。 在压缩包...
NekoHTML是一个开源的Java库,主要用于解析HTML和XML文档,尤其在处理不规范或半结构化的HTML时表现优秀。这个库由Daniel C. Betchkal和Kurt Heuts创建,版本为0.9.5,是搜索引擎开发中的一个重要工具。NekoHTML的...
NekoHTML是一个开源的Java库,主要用于解析HTML文档并将其转换为标准的XML DOM(文档对象模型)。这个库是Xerces项目的一部分,由Apache软件基金会维护。NekoHTML特别适用于处理不规范或非标准的HTML,因为它可以...
NekoHTML 是一个简单的 HTML 扫描器和标签补偿器,使得程序能解析 HTML 文档并用标准的 XML 接口来访问其中的信息。这个解析器能投扫描 HTML 文件并“修正”许多作者(人或机器)在编写 HTML 文档过程中常犯的错误。...
`DOMParser`是解析HTML文档的主要类,它基于W3C的Document Object Model (DOM) API来构建解析后的HTML结构。DOM是一种树形数据结构,允许开发者通过节点遍历、修改和操作HTML文档。`NekoDoc`则是一个用于生成HTML...
NekoHTML是一个Java语言的 HTML扫描器和标签补全器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能够扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档 过程中常...
总的来说,NeKoHTML 1.9.21是一个强大的工具,可以帮助Java开发者处理和解析HTML文档,无论这些文档是否遵循标准。通过构建规范的DOM树,NeKoHTML简化了复杂HTML数据的处理工作,提升了开发效率和代码质量。
例如,可以创建一个`org.htmlparser.Parser`实例,然后使用`parse()`方法解析HTML内容。解析完成后,可以通过DOM接口如`NodeList`, `Node`, `Element`等来遍历和操作DOM树。 标签"nekoHtml"表明这个库专注于HTML...
它是Xerces2 Java解析器的一部分,由Apache软件基金会开发。NekoHTML的主要功能是将不规范的HTML源代码转换为标准的XML,使得开发者可以更容易地处理和操作网页内容。在这个主题中,我们将深入探讨NekoHTML的核心...
开发者只需将此jar包添加到项目的类路径中,就可以调用nekohtml提供的API来解析HTML或XHTML文档。例如,可以使用`org.cyberneko.html.parsers.DocumentBuilder`类来创建一个解析器,并通过`parse()`方法读取和解析...
`nekohtml` 是一个开源的Java库,用于解析HTML和XML文档,它提供了一个Xerces Lite解析器,能够处理不严格的HTML标记,使得在Java应用程序中处理网页内容变得更加容易。这个帮助类可能指的是`nekohtml`库中的一些...
总的来说,"nekohtml-1.9.7.zip" 提供的NekoHTML库是一个强大的工具,能够帮助开发者处理和解析HTML文档,尤其是在处理不标准的HTML时表现出色。结合Lucene,可以构建高效的全文搜索引擎,对于需要处理大量网页数据...
NekoHTML是一个开源的Java库,用于解析和构建XML和HTML文档。它的全名是“NekoHTML 1.9.18”,正如标题和描述所示。这个版本的发布主要针对那些需要处理不规范或者半结构化的HTML文档的开发者。在Java应用程序中,...
【nekohtml+dom4j】是一个用于处理和解析HTML及XML文档的组合工具,它在IT领域中常被用作强大的网络数据抓取和分析工具。在这个组合中,nekohtml扮演着核心角色,而dom4j则提供了强大的DOM(Document Object Model)...
在 Java 中,要使用 NekoHTML 解析 HTML,需要引入以下包: ```java import org.cyberneko.html.parsers.*; import org.xml.sax.*; import org.w3c.dom.*; import org.w3c.dom.html.*; import org.apache.html.dom....
- **数据提取**:在抓取或处理网页数据时,可以先用NekoHTML解析HTML,然后使用XPath或DOM操作提取所需信息。 - **测试工具**:在开发Web应用时,可以利用NekoHTML来验证HTML模板是否正确生成。 在使用"nekohtml-...
Apache NekoHTML 是一个用 Java 编写的 HTML 解析器,它能够将 HTML 文档转换成 DOM(Document Object Model)树,并提供了一种方式将该 DOM 树导出为 XML 格式。 ##### 1. 使用 NekoHTML 解析 HTML 文件 ```java ...