`
cesul
  • 浏览: 31678 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

使用NekoHtml根据div#Id解析htm文档实例

阅读更多
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解析 html 文件

    NekoHtml是一个开源的、Java实现的...学习和掌握如何使用NekoHtml,可以帮助开发者更有效地解析和操作HTML文档,提升工作效率。同时,通过研究提供的"ParseHtmlFiles",可以加深对NekoHtml工作原理和实际应用的理解。

    Java解析HTML之NekoHTML

    在Java中解析HTML时,一个常用的库是NekoHTML,它是一个开源项目,主要用于构建和解析不完整的、错误的HTML文档。本篇文章将深入探讨NekoHTML的工作原理以及如何在Java中使用它。 NekoHTML是由Apache Software ...

    nekohtml包能够解析HTML文件

    NekoHTML是一个简单地HTML扫描器和标签补偿器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能投扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档过程中常犯的...

    nekohtml使用笔记 txt

    根据描述,“透明地创建 HTML 解析器”意味着用户可以方便地集成 NekoHTML 至现有的项目中,而“便利的 HTML 解析器类”则表明该库提供了易于使用的 API 接口。文档片段解析功能则是为了更好地处理部分或不完整的 ...

    NekoHtml 解析内容时需要注意的地方

    《NekoHtml解析内容时需要注意的地方》 在深入探讨NekoHtml解析内容的注意事项之前,首先需要理解NekoHtml是什么。NekoHtml是一款开源的HTML解析器,它由Apache Software Foundation旗下的Xerces项目开发,主要用于...

    html解析例子,用nekohtml写的

    NekoHTML的核心类是`org.cyberneko.html.parsers.DOMParser`,它是基于Xerces的DOM解析器,它能够将HTML文档转化为标准的W3C Document对象,这使得我们可以使用XPath或CSS选择器来查询和操作HTML元素。在提供的`Neko...

    NekoHTML

    NekoHTML是一个开源的Java库,主要用于解析HTML文档并将其转换为标准的XML DOM(文档对象模型)。这个库是Xerces项目的一部分,由Apache软件基金会维护。NekoHTML特别适用于处理不规范或非标准的HTML,因为它可以...

    nekohtml-1.9.13.zip

    这个"nekohtml-1.9.13.zip"压缩包包含的是NekoHTML的1.9.13版本,这是一个稳定且广泛使用的版本。 NekoHTML的核心是两个关键类:`org.cyberneko.html.parsers.DOMParser`和`net.sourceforge.nekodoc.NekoDoc`。`DOM...

    NekoHTML学习笔记.doc

    然后,使用 JAXP 实例化解析器对象时,可以透明地创建 HTML 解析器。也可以使用 org.cyberneko.html.parsers 包的 DOM 和 SAX 解析器类来创建解析器,避免影响 Xerces 在其它情况下的使用。 四、NekoHTML 的优缺点 ...

    Nekohtml_0.9.5(Java).rar_Nekohtml_0.9.5_java 搜索引擎_nekoht_nekohtm

    NekoHTML的核心功能是将非标准的HTML源码转化为符合XML规范的DOM(Document Object Model)结构,这样开发者可以使用标准的XML API来处理解析后的文档。这对于构建搜索引擎来说至关重要,因为互联网上的HTML页面质量...

    nekohtml解析器

    NekoHTML是一个Java语言的 HTML扫描器和标签补全器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能够扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档 过程中常...

    nekohtml+xpath实例,及注意事项

    标题 "nekohtml+xpath 实例,及注意事项" 指涉的是使用 nekohtml 库结合 XPath 表达式进行 HTML 解析和查询的技术。NekoHTML 是一个开源的 Java 库,它允许开发者解析和构建不完整的或错误的 HTML 文档。XPath 则是...

    NekoHTML的相关用法以及j代码包

    NekoHTML是一个开源的Java库,主要用于解析和构建XML和HTML文档。它是Xerces2 Java解析器的一部分,由Apache软件基金会开发。NekoHTML的主要功能是将不规范的HTML源代码转换为标准的XML,使得开发者可以更容易地处理...

    NekoHTML学习笔记.rar

    NekoHTML是一个简单地HTML扫描器和标签补偿器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能投扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档过程中常犯的...

    nekohtml-1.9.14源码及jar包

    **nekohtml**是一个轻量级的解析器,主要功能是解析不标准的HTML或XHTML文档,将其转换为标准的DOM(Document Object Model)结构。由于互联网上的HTML文档往往存在不规范的情况,如缺失闭合标签、非法嵌套等,...

    NeKoHTML 1.9.21

    使用NeKoHTML时,开发者首先需要创建一个`DOMParser`实例,然后配置解析器以处理HTML或XHTML,接着设置输入源,最后调用`parse`方法解析HTML文本。解析完成后,`parse`方法会返回一个`Document`对象,供开发者进行...

    nekohtml-1.9.7.zip

    通过使用NekoHTML,开发者可以将HTML文档转换成标准的XML文档,从而方便进行后续的处理和操作。 在描述中提到"很好用",这可能是因为NekoHTML提供了以下优势: 1. **容错性**:NekoHTML能够处理不规范的HTML代码,...

    nekohtml 帮助类

    2. **构建DOM树**:通过解析HTML或XML文档,`nekohtml`将内容转换为DOM结构,开发者可以使用`NodeHelper`来访问和操作这个结构,比如查找特定元素、修改内容或者遍历整个文档。 3. **错误处理**:`NekoHelper`可能...

    利用TikaAPI解析各种文档

    对于PDF文档,Tika使用PDFBox库进行解析,它可以提取文本、图像、元数据等。PDFBox提供了低级API用于处理PDF的内部结构,而Tika则将其封装成更友好的接口。对于HTML文档,Tika结合了Jsoup和NekoHTML等库,确保能够...

    nekoHtml 1.9.19 加 source 源码 html分析jar

    例如,可以创建一个`org.htmlparser.Parser`实例,然后使用`parse()`方法解析HTML内容。解析完成后,可以通过DOM接口如`NodeList`, `Node`, `Element`等来遍历和操作DOM树。 标签"nekoHtml"表明这个库专注于HTML...

Global site tag (gtag.js) - Google Analytics