NekoHtml版本:nekohtml-1.9.14
Jar文件:nekohtml.jar;xercesImpl.jar;xml-apis.jar
/**将一个文件夹下的一类html文件解析成同名网页正文文本文件存至另一文件夹**/
public class ParseDir {
private File sourceDir;
private File targetDir;
private ParsePage pp;
public void execute(String sourceDir, String targetDir, String ElementId, Boolean addTitle, String chartSet) throws Exception{
this.sourceDir = new File(sourceDir);
this.targetDir = new File(targetDir);
if (!this.targetDir.exists()) this.targetDir.mkdirs(); //目标不存在则新建
File[] files = this.sourceDir.listFiles();
pp = new ParsePage();
for (File file : files) {
String filename = file.getName();
if (filename.endsWith(".htm") || filename.endsWith("html")) { //只解析htm/html页面
pp.execute(file.getPath(), targetDir + "/"
+ filename.substring(0, filename.lastIndexOf(".") - 1)
+ ".txt", ElementId, addTitle, chartSet);
}
}
}
public static void main(String[] args) throws Exception {
ParseDir p = new ParseDir();
p.execute("E:/", "E:/5", "news_content", true, "utf-8");
}
}
==============
/**根据divId使用NekoHtml解析单篇文档**/
public class ParsePage {
private static DOMParser parser;
public ParsePage() throws Exception {
parser = new DOMParser();
parser.setProperty(
"http://cyberneko.org/html/properties/default-encoding",
"utf-8");
}
public void execute(String sourceFilename, String targetFilename, String ElementId, Boolean addTitle, String chartSet) throws Exception {
Reader r = new InputStreamReader(new FileInputStream(sourceFilename), chartSet); // 显示声明所使用的流编码
parser.parse(new InputSource(r));
Document doc = parser.getDocument();
PrintWriter pw = new PrintWriter(new FileWriter(targetFilename));
if (addTitle) pw.append(doc.getElementsByTagName("title").item(0).getTextContent() + "\r\n"); //写入标题内容
pw.append(TextExtractor(doc.getElementById(ElementId)));
pw.flush();
pw.close();
}
public static String TextExtractor(Node root) {
if (root.getNodeType() == Node.TEXT_NODE) { // 若是文本节点的话,直接返回,并保持原换行格式
return root.getTextContent().trim() + "\r\n";
}
if (root.getNodeType() == Node.ELEMENT_NODE) {
Element elmt = (Element) root;
if (elmt.getTagName().equals("STYLE") || elmt.getTagName().equals("SCRIPT")) // 抛弃脚本
return "";
NodeList children = elmt.getChildNodes();
StringBuffer text = new StringBuffer();
for (int i = 0; i < children.getLength(); i++) {
text.append(TextExtractor(children.item(i)));
}
return text.toString();
}
return ""; // 对其它类型的节点,返回空值
}
}
分享到:
相关推荐
NekoHtml是一个开源的、Java实现的...学习和掌握如何使用NekoHtml,可以帮助开发者更有效地解析和操作HTML文档,提升工作效率。同时,通过研究提供的"ParseHtmlFiles",可以加深对NekoHtml工作原理和实际应用的理解。
在Java中解析HTML时,一个常用的库是NekoHTML,它是一个开源项目,主要用于构建和解析不完整的、错误的HTML文档。本篇文章将深入探讨NekoHTML的工作原理以及如何在Java中使用它。 NekoHTML是由Apache Software ...
NekoHTML是一个简单地HTML扫描器和标签补偿器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能投扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档过程中常犯的...
根据描述,“透明地创建 HTML 解析器”意味着用户可以方便地集成 NekoHTML 至现有的项目中,而“便利的 HTML 解析器类”则表明该库提供了易于使用的 API 接口。文档片段解析功能则是为了更好地处理部分或不完整的 ...
《NekoHtml解析内容时需要注意的地方》 在深入探讨NekoHtml解析内容的注意事项之前,首先需要理解NekoHtml是什么。NekoHtml是一款开源的HTML解析器,它由Apache Software Foundation旗下的Xerces项目开发,主要用于...
NekoHTML的核心类是`org.cyberneko.html.parsers.DOMParser`,它是基于Xerces的DOM解析器,它能够将HTML文档转化为标准的W3C Document对象,这使得我们可以使用XPath或CSS选择器来查询和操作HTML元素。在提供的`Neko...
NekoHTML是一个开源的Java库,主要用于解析HTML文档并将其转换为标准的XML DOM(文档对象模型)。这个库是Xerces项目的一部分,由Apache软件基金会维护。NekoHTML特别适用于处理不规范或非标准的HTML,因为它可以...
这个"nekohtml-1.9.13.zip"压缩包包含的是NekoHTML的1.9.13版本,这是一个稳定且广泛使用的版本。 NekoHTML的核心是两个关键类:`org.cyberneko.html.parsers.DOMParser`和`net.sourceforge.nekodoc.NekoDoc`。`DOM...
然后,使用 JAXP 实例化解析器对象时,可以透明地创建 HTML 解析器。也可以使用 org.cyberneko.html.parsers 包的 DOM 和 SAX 解析器类来创建解析器,避免影响 Xerces 在其它情况下的使用。 四、NekoHTML 的优缺点 ...
NekoHTML的核心功能是将非标准的HTML源码转化为符合XML规范的DOM(Document Object Model)结构,这样开发者可以使用标准的XML API来处理解析后的文档。这对于构建搜索引擎来说至关重要,因为互联网上的HTML页面质量...
NekoHTML是一个Java语言的 HTML扫描器和标签补全器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能够扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档 过程中常...
标题 "nekohtml+xpath 实例,及注意事项" 指涉的是使用 nekohtml 库结合 XPath 表达式进行 HTML 解析和查询的技术。NekoHTML 是一个开源的 Java 库,它允许开发者解析和构建不完整的或错误的 HTML 文档。XPath 则是...
NekoHTML是一个开源的Java库,主要用于解析和构建XML和HTML文档。它是Xerces2 Java解析器的一部分,由Apache软件基金会开发。NekoHTML的主要功能是将不规范的HTML源代码转换为标准的XML,使得开发者可以更容易地处理...
NekoHTML是一个简单地HTML扫描器和标签补偿器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能投扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档过程中常犯的...
**nekohtml**是一个轻量级的解析器,主要功能是解析不标准的HTML或XHTML文档,将其转换为标准的DOM(Document Object Model)结构。由于互联网上的HTML文档往往存在不规范的情况,如缺失闭合标签、非法嵌套等,...
使用NeKoHTML时,开发者首先需要创建一个`DOMParser`实例,然后配置解析器以处理HTML或XHTML,接着设置输入源,最后调用`parse`方法解析HTML文本。解析完成后,`parse`方法会返回一个`Document`对象,供开发者进行...
通过使用NekoHTML,开发者可以将HTML文档转换成标准的XML文档,从而方便进行后续的处理和操作。 在描述中提到"很好用",这可能是因为NekoHTML提供了以下优势: 1. **容错性**:NekoHTML能够处理不规范的HTML代码,...
2. **构建DOM树**:通过解析HTML或XML文档,`nekohtml`将内容转换为DOM结构,开发者可以使用`NodeHelper`来访问和操作这个结构,比如查找特定元素、修改内容或者遍历整个文档。 3. **错误处理**:`NekoHelper`可能...
对于PDF文档,Tika使用PDFBox库进行解析,它可以提取文本、图像、元数据等。PDFBox提供了低级API用于处理PDF的内部结构,而Tika则将其封装成更友好的接口。对于HTML文档,Tika结合了Jsoup和NekoHTML等库,确保能够...
例如,可以创建一个`org.htmlparser.Parser`实例,然后使用`parse()`方法解析HTML内容。解析完成后,可以通过DOM接口如`NodeList`, `Node`, `Element`等来遍历和操作DOM树。 标签"nekoHtml"表明这个库专注于HTML...