- 浏览: 1693992 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1323)
- easyui学习 (21)
- jquery (51)
- css (21)
- js (103)
- html (19)
- java (95)
- 测试工具 (7)
- oracle (45)
- eclipse (9)
- spring (8)
- 开源框架 (111)
- struts (12)
- hsqlbd (2)
- h2database (2)
- maven (8)
- activiti (2)
- sql语句 (7)
- fmpp (1)
- apache (2)
- tomcat (6)
- jbpm (2)
- ant (20)
- mysql (10)
- 业务需求 (54)
- ralasafe (3)
- Quartz (4)
- mybatis (8)
- flex (6)
- html5 (16)
- apache工具 (4)
- hibernate (5)
- linux (109)
- powerdesigner (3)
- 报表 (1)
- log4j (2)
- junit (1)
- shiro (4)
- wap (3)
- php (28)
- mantis (1)
- poi (3)
- extjs (1)
- 安防 (34)
- 网络 (113)
- UltraEdit (1)
- 手机 (9)
- freemarker (19)
- jquery mobile (28)
- css3 (1)
- 微信 (9)
- nodejs (7)
- 项目管理 (14)
- 文档 (13)
- ibatis (22)
- ftp (3)
- spring MVC (9)
- groovy (2)
- AngularJS (19)
- nginx (15)
- 会计 (5)
- hive (1)
- 分布式 (8)
- 设计模式 (4)
- velocity (2)
- 爬虫 (2)
- git (1)
- thymeleaf (4)
- activemq (5)
- bootstrap (1)
- Spring Batch (1)
- memcache (20)
- ttserver (1)
- Jenkins (1)
- cxf (1)
- axure (2)
- 银行金融 (11)
- c语言 (2)
- 大数据 (4)
- drools (4)
- python (2)
- 交易所 (1)
- haproxy (1)
- dubbo (3)
- dos (3)
- 人力资源 (4)
- 支付 (1)
- Intellij IDEA (1)
- IPO (1)
- springboot (1)
- 质量管理 (7)
- svn (1)
- 其他 (8)
- 阿里云 (2)
- 多媒体设计 (2)
- 数据库 (4)
- wps (0)
最新评论
-
masuweng:
en
Native.js -
rmnjava:
我按照你的方法写的,不起作用啊
easyui验证的删除和恢复 -
rmnjava:
原地址打不开了呀
easyui验证的删除和恢复 -
sunteng:
sunteng 写道这是json 吗[{url:'aaa'}, ...
freemarker解析json数组 -
sunteng:
这是json 吗
freemarker解析json数组
NekoHTML是一个Java语言的 HTML扫描器和标签补全器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能够扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档 过程中常犯的错误。
NekoHTML能增补缺失的父元素、自动用结束标签关闭相应的元素,以及不匹配的内嵌元素标签。NekoHTML的开发使用了 Xerces Native Interface (XNI),后者是Xerces2的实现基础。
现在流行的HTML解析工具主要有HTML
Parser和nekohtml,我就不细介绍他们了,有兴趣的话可以自己google。个人比较喜欢用nekohtml+xerces,xerces实
际上也是一个XML的解析包,nekohtml建筑在其之上,两者搭配后可将网页解析成一颗DOM树,这样我们对于网页的操作就转化为对这棵树的操作了,
而这正是它和HTML Parser的不同之处,也是我喜欢它的原因。
我们对网页的操作主要通过org.w3c.dom中提供的接口(nekohtml+xerces提供这些接口的实现),熟悉XML解析的朋友对这个包一定
不会陌生。这个包中用的比较多的接口有:Node、Document、Element、Text等。Node是DOM树中所有节点根接口,它的子接口有
Document、ProcessingInstruction、Element、Comment、Text等,具体的继承层次请参考java
doc。正如这些接口的名字说显示的,它们对应于DOM树中相应的元素,这里我就不细说了,下面我们通过一个例子来说明它们的使用方法。
从网页中抽取文本是一项很平常的工作,HTML Parser中提供了一个TextExtractingVisitor来实现这一点,但nekohtml没有现成这样的类,我们自己写一个也不难:
import java.io.BufferedReader;
import java.io.FileReader;
import org.cyberneko.html.parsers.DOMParser;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
public class Demo {
public static String TextExtractor(Node root){
//若是文本节点的话,直接返回
if (root.getNodeType() == Node.TEXT_NODE) {
return root.getNodeValue().trim();
}
if(root.getNodeType() == Node.ELEMENT_NODE) {
Element elmt = (Element) root;
//抛弃脚本
if (elmt.getTagName().equals("STYLE")
|| elmt.getTagName().equals("SCRIPT"))
return "";
NodeList children = elmt.getChildNodes();
StringBuilder text = new StringBuilder();
for (int i = 0; i < children.getLength(); i++) {
text.append(TextExtractor(children.item(i)));
}
return text.toString();
}
//对其它类型的节点,返回空值
return "";
}
public static void main(String[] args) throws Exception{
//生成html parser
DOMParser parser = new DOMParser();
//设置网页的默认编码
parser.setProperty(
"http://cyberneko.org/html/properties/default-encoding
",
"gb18030");
//input file
BufferedReader in = new BufferedReader(new FileReader("input.htm"));
parser.parse(new InputSource(in));
Document doc = parser.getDocument();
//获得body节点,以此为根,计算其文本内容
Node body = doc.getElementsByTagName("BODY").item(0);
System.out.println(TextExtractor(body));
}
}
除了提供DOM接口外,nekohtml还有一些其他功能,如格式化网页文本、确保网页格式良好(well-formed)等,具体可参见nekohtml的文档
发表评论
-
QuickTest Professional
2019-05-06 13:29 315QuickTest Professional简称QTP,是一种 ... -
Apache ab并发负载压力测试
2019-05-06 13:24 344ab是Apache提供的一款小巧的压力测试工具。 ab命令 ... -
JSON Web Token(JWT)
2019-03-06 13:19 333JSON Web Token(JWT)是目前最流行的跨域身 ... -
PageOffice 在线office编辑
2019-03-05 17:17 0http://www.zhuozhengsoft.com/P ... -
Elasticsearch
2019-03-05 16:33 0Elasticsearch是一个基于Apache Luce ... -
Prezi
2018-06-29 14:15 329Prezi是一款非常有创意的PPT演示文稿制作软件,具有Mac ... -
sftp搭建
2018-06-28 08:24 688最近项目需要用到sftp服务器,整体sftp服务器搭建比ft ... -
java执行linux命令
2018-05-09 15:51 306http://www.ganymed.ethz.ch/ssh ... -
protocol buffer
2018-04-25 08:27 356protocolbuffer(以下简称PB)是google 的 ... -
JavaMelody
2018-04-24 18:11 577JavaMelody是运行在Java Web容器中,用来监控 ... -
Swagger
2018-04-24 15:58 410Swagger是一个Restful风格接口的文档在线自动生成和 ... -
阿里开源前端框架
2017-12-28 08:41 1534https://ant.design/ http:/ ... -
gitlab
2017-12-26 13:44 385GitLab 是一个用于仓库管理系统的开源项目。使用Git作为 ... -
Flume
2017-10-10 08:57 328Flume最早是Cloudera提供的日志收集系统,目前是A ... -
wicket
2017-09-04 15:40 387Wicket,一个开发Java Web应用程序框架。它使得开发 ... -
推荐个restful小工具
2017-07-27 08:09 517https://github.com/ijson/in-res ... -
U聊通讯工具
2017-07-18 15:44 429https://upchat.95516.net -
Tokyo Cabinet ttserver
2017-01-17 16:32 347http://fallabs.com/tokyocabine ... -
mybatis-dalgen
2016-12-21 09:35 2384官网:http://git.oschina.net/bang ... -
Middlegen
2016-12-21 09:16 270Middlegen一个免费数据库驱动(database-dri ...
相关推荐
NekoHtml是一个开源的、Java实现的HTML解析器,它主要被设计用来处理不规则的、现实世界中的HTML文档。这个解析器的核心是NekoParser,它能够将HTML源代码转化为DOM(Document Object Model)结构,使得开发者可以...
NekoHTML是一个简单地HTML扫描器和标签补偿器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的...这个解析器能投扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档过程中常犯的错误。
在Java中解析HTML时,一个常用的库是NekoHTML,它是一个开源项目,主要用于构建和解析不完整的、错误的HTML文档。本篇文章将深入探讨NekoHTML的工作原理以及如何在Java中使用它。 NekoHTML是由Apache Software ...
NekoHTML的核心类是`org.cyberneko.html.parsers.DOMParser`,它是基于Xerces的DOM解析器,它能够将HTML文档转化为标准的W3C Document对象,这使得我们可以使用XPath或CSS选择器来查询和操作HTML元素。在提供的`Neko...
NekoHTML是一个Java语言的 HTML扫描器和标签补全器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问...这个解析器能够扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档 过程中常犯的错误。
NekoHtml是一款开源的HTML解析器,它由Apache Software Foundation旗下的Xerces项目开发,主要用于处理不规范的HTML文档。NekoHtml的设计目标是能够解析那些在语法上不完全符合标准的HTML,从而帮助开发者处理网络上...
NekoHTML是一个开源的、轻量级的Java库,它主要用作HTML解析器和XML解析器。在处理不规则或非标准格式的HTML时,NekoHTML特别有用,因为它可以将这些不规则的HTML文档转换成结构化的XML文档,从而使得其他XML工具...
这个解析器能投扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档过程中常犯的错误。NekoHTML能增补缺失的父元素、自动用结束标签关闭相应的元素,以及不匹配的内嵌元素标签。NekoHTML的开发使用了Xerces ...
NekoHTML是一个开源的Java库,主要用于解析HTML文档并将其转换为标准的XML DOM(文档对象模型)。这个库是Xerces项目的一部分,由Apache软件基金会维护。NekoHTML特别适用于处理不规范或非标准的HTML,因为它可以...
这个解析器能投扫描 HTML 文件并“修正”许多作者(人或机器)在编写 HTML 文档过程中常犯的错误。 一、NekoHTML 的基本概念 NekoHTML 是一个基于 Java 的 HTML 扫描器,由 J. Andrew Clark 编写。它使用 Xerces ...
nekoHtml通过提供一个健壮的解析器,将非结构化的HTML文档转换为可操作的DOM(Document Object Model)树,使开发者能够方便地访问和操作HTML元素。它还支持XML规范,可以处理不完全符合标准的HTML文档,这在处理...
NekoHTML是一个开源的Java库,主要用于解析和构建XML和HTML文档。它是Xerces2 Java解析器的一部分,由Apache软件基金会开发。NekoHTML的主要功能是将不规范的HTML源代码转换为标准的XML,使得开发者可以更容易地处理...
4. `xercesImpl.jar`: NeKoHTML依赖于Xerces Java XML解析器,这个jar包包含了Xerces的实现。 5. `xml-apis.jar`: 包含了XML API的接口定义,是Xerces和其他XML解析器的公共接口。 在使用NeKoHTML时,开发者需要将`...
**nekohtml**是一个轻量级的解析器,主要功能是解析不标准的HTML或XHTML文档,将其转换为标准的DOM(Document Object Model)结构。由于互联网上的HTML文档往往存在不规范的情况,如缺失闭合标签、非法嵌套等,...
`nekohtml` 是一个开源的Java库,用于解析HTML和XML文档,它提供了一个Xerces Lite解析器,能够处理不严格的HTML标记,使得在Java应用程序中处理网页内容变得更加容易。这个帮助类可能指的是`nekohtml`库中的一些...
这个库的核心功能是Xerces-J,一个强大的XML解析器,但是NekoHTML增加了对HTML特定特性的理解和处理。通过使用NekoHTML,开发者可以将HTML文档转换成标准的XML文档,从而方便进行后续的处理和操作。 在描述中提到...
HTML通常比XML松散,不遵循严格的规则,而nekohtml通过解析HTML源码,修正语法错误,添加缺失的闭合标签,使非标准的HTML文档可以被XML解析器正确处理。这对于需要对网页内容进行深入分析的程序来说是非常有用的,...
3. **解析器**:NekoHTML包含一个高效的HTML解析器,能够快速有效地处理大量HTML文档。 4. **安全性**:对于可能存在的XSS(Cross-Site Scripting)攻击,NekoHTML提供了一定程度的防护,通过转义潜在的恶意脚本元素...
NekoHTML 是一款轻量级且高效的 HTML 解析器库,它可以将不规范的 HTML 文档解析为接近标准的 XML 结构,便于后续处理和分析。该库尤其适用于对性能有较高要求的应用场景。 根据描述,“透明地创建 HTML 解析器”...