`
小网客
  • 浏览: 1243742 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于NekoHTML和dom4j获取所有html的Xpath

 
阅读更多

背景:

获取html页面所有有text节点的xpath

 

思路:

NekoHTML是一个Java语言的 HTML扫描器和标签补全器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。而dom4j可以很好的用于XML,XPath和XSL。

基于html构建xml

基于xml获取所有的有text的xpath

 

环境:

<dependency>
	<groupId>net.sourceforge.nekohtml</groupId>
	<artifactId>nekohtml</artifactId>
	<version>1.9.10</version>
</dependency>

<dependency>
	<groupId>dom4j</groupId>
	<artifactId>dom4j</artifactId>
	<version>1.6.1</version>
</dependency>

 

实现如下:

import java.io.FileInputStream;
import java.util.Iterator;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.cyberneko.html.parsers.DOMParser;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.DOMReader;
import org.xml.sax.InputSource;

public class NekoHTML {

	public static void main(String[] args) throws Throwable {
		DOMParser parser = new DOMParser();
		parser.parse(new InputSource(new FileInputStream("D:/dom/1.htm")));

		DOMReader domReader = new DOMReader();
		Document document = domReader.read(parser.getDocument());
		Element root = document.getRootElement();
		Map<String, String> map = new java.util.concurrent.ConcurrentHashMap<String, String>();
		dom2XPathMap(root, map);
		System.out.println(map);
	}

	private static void dom2XPathMap(Element root, Map<String, String> map) {
		if (root == null || root.isTextOnly()) {

			if (StringUtils.isNotEmpty(root.getText())) {
				map.put(root.getUniquePath(), root.getText());
			}
			if (map.containsKey(root.getUniquePath())) {
			}

			return;
		}
		Iterator<Element> iterator = root.elementIterator();
		while (iterator.hasNext()) {
			Element el = iterator.next();
			dom2XPathMap(el, map);

		}
	}
}

 

 

0
0
分享到:
评论

相关推荐

    nekohtml+dom4j

    【nekohtml+dom4j】是一个用于处理和解析HTML及XML文档的组合工具,它在IT领域中常被用作强大的网络数据抓取和分析工具。在这个组合中,nekohtml扮演着核心角色,而dom4j则提供了强大的DOM(Document Object Model)...

    dom4j jaxen-1.zip

    例如,以下代码展示了如何使用DOM4J和JAXEN来获取XML文档中所有`&lt;book&gt;`元素的标题: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.jaxen....

    nekohtml+xpath实例,及注意事项

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

    html解析例子,用nekohtml写的

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

    nekohtml-1.9.22.zip

    NekoHTML是基于Xerces-J和KHTML的解析器实现,它的设计目标是尽可能地遵循HTML和XML的规范,同时也考虑到实际网页的多样性。它支持HTML4和HTML5的一些特性,并且能够处理常见的HTML错误和不规范的标记。NekoHTML常被...

    上传nekohtml-1.9.9.zip

    - **数据提取**:在抓取或处理网页数据时,可以先用NekoHTML解析HTML,然后使用XPath或DOM操作提取所需信息。 - **测试工具**:在开发Web应用时,可以利用NekoHTML来验证HTML模板是否正确生成。 在使用"nekohtml-...

    jaxen-1.1-beta-7.zip

    它提供了一个独立于特定XML API的XPath实现,可以在DOM、DOM4J、JDOM、XOM、NekoHTML等多种不同的XML模型上工作,极大地增强了XML处理的灵活性。这种跨平台的特性使得开发人员能够在不更换XML解析器的情况下,依然...

    内含httpunit、js、nekohtml、resolver、servlet等多个jar包

    3. **nekohtml.jar**: NekoHTML 是一个开源的HTML解析器,它可以解析HTML和XML文档并生成一个标准的DOM(文档对象模型)树。这个库常用于处理不规则或非标准的HTML,比如在抓取网页数据或进行网页分析时,确保能够...

    webmagic的所有jar包

    10. **slf4j-api.jar** 和 **logback-classic.jar**:这是SLF4J(Simple Logging Facade for Java)和Logback日志框架的jar包,它们为WebMagic提供了统一的日志接口和实现,方便调试和监控。 以上就是WebMagic ...

    Java网络爬虫jar包

    Jsoup支持CSS选择器,而XPath可以在JDOM或DOM4J等XML处理库中使用。它们帮助我们高效地找到目标数据。 4. **数据存储**: 爬取的数据通常需要存储以便后续处理或分析。可以使用文件系统、数据库(如MySQL、MongoDB...

    httpunit测试包

    8. **nekohtml.jar**:NekoHTML是一个开源的HTML解析器和DOM构建器,它可以解析HTML文档并生成一个可操作的DOM树。这对于处理HTML内容以及进行断言检查非常有用。 9. **rhino-patch.txt**:这可能是Rhino ...

    [搜索链接]Java网络爬虫(蜘蛛)源码.zip

    Java的try-catch语句用于捕获异常,而Log4j或SLF4J提供日志记录功能,帮助开发者追踪和解决问题。 9. **持续集成与自动化测试**:使用如Maven或Gradle进行项目构建,JUnit进行单元测试,Selenium进行功能测试,可以...

    java常用类库中文速查表

    还有用于XML处理的工具类库,比如dom4j,是一个易用且开源的库,用于XML,支持DOM、SAX和JAXP等接口。JXPath可以使用Xpath语法操纵符合Java类命名规范的JavaBeans。NekoHtml是一个简单的HTML扫描器和标签补偿器,...

    搜索引擎核心技术与实现

    - **从HTML文件中提取文本**:涵盖了字符集编码识别、网页编码转换、使用正则表达式和HTMLParser进行数据提取、结构化信息提取、网页DOM结构分析、使用NekoHTML和XPath提取信息、网页去噪和结构相似度计算、提取标题...

    SSH 中jar包说明

    - **作用**:支持DOM、SAX以及XPath等多种方式处理XML文档,方便进行数据交换和解析。 #### 11. **ehcache-1.1.jar** - **用途**:EHCache是一个广泛使用的高性能纯Java实现的二级缓存框架。 - **作用**:通过内存...

Global site tag (gtag.js) - Google Analytics