`
reymont
  • 浏览: 530243 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

HtmlCleaner XPath API使用

阅读更多

HtmlCleaner是使用Java编写的HTML解析开源组件。网络上的HTML一般是比较杂乱的,难以进一步处理,需要大量的时间去剔除无效的内容,按照顺序整理tag,attribute等。HtmlCleaner能够将任意的HTML格式化为XML。HtmlCleaner会同浏览器一样默认的创建DOM(Document Object Model)。不论怎样,都需要自定义tag筛选策略和调整方式。

 

HtmlCleaner可以配置相应的参数(http://htmlcleaner.sourceforge.net/parameters.php),可以在在Java代码中定义,如:

 

HtmlCleaner cleaner = 
    new HtmlCleaner( new ConfigFileTagProvider(myConfigFile) );

 

 

也可以在命令行中定义,如:

 

java -jar htmlcleanerXX.jar [src = <url | file>] [incharset = <charset>] 
                                [dest = <file>] [outcharset = <charset>] 
                                [taginfofile = <file>] [options...]

 

 

可以通过http://htmlcleaner.sourceforge.net/javause.php,查看基本的用法。

 

既然HtmlCleaner在内部将HTML组织成XML,那么使用XPath也是理所当然的。作为例子,抓取“豆瓣电影TOP250”

 

package org.htmlcleaner;

import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Reymont.Li
 * @DateTime 2015年8月17日 下午6:36:26
 */
public class DoubanTest {
	// http://movie.douban.com/top250
	// http://movie.douban.com/top250?start=200&filter=&type=
	// http://movie.douban.com/top250?start=225&filter=&type=
	public static void main(String[] args) throws Exception {

		HtmlCleaner cleaner = new HtmlCleaner();

		String urlAddr = "http://movie.douban.com/top250";

		List<String> names = new ArrayList<String>();
		List<String> stars = new ArrayList<String>();
		List<String> remarks = new ArrayList<String>();

		for (int i = 0; i <= 10; i++) {
			TagNode root = cleaner.clean(new URL(urlAddr + "?start=" + i * 25));

			Object[] nameArray = root.evaluateXPath("//div[@class='info']//a/span[1]");
			for (Object nameNode : nameArray) {
				String name = nameNode instanceof TagNode ? ((TagNode) nameNode).getText().toString()
						: nameNode.toString();
				names.add(name.trim());
			}
			Object[] starArray = root.evaluateXPath("//div[@class='info']//em");
			for (Object starNode : starArray) {
				String star = starNode instanceof TagNode ? ((TagNode) starNode).getText().toString()
						: starNode.toString();
				stars.add(star.trim());
			}
			Object[] remarkArray = root.evaluateXPath("//div[@class='info']//div[@class='star']/span[2]");
			for (Object remarkNode : remarkArray) {
				String remark = remarkNode instanceof TagNode ? ((TagNode) remarkNode).getText().toString()
						: remarkNode.toString();
				remarks.add(remark.trim());
			}
		}

		for (int i = 0; i < names.size(); i++) {
			System.out.println(
					(i + 1) + "\t name:" + names.get(i) + "\t\t star:" + stars.get(i) + "\t remark:" + remarks.get(i));
		}
	}
}

 

 

参考:

HtmlCleaner Project Home Page

http://htmlcleaner.sourceforge.net/javause.php

htmlcleaner使用及xpath语法初探 - reesun的专栏 - 博客频道 - CSDN.NET

http://blog.csdn.net/reesun/article/details/8021201

Java - XPath解析爬取内容 - 推酷

http://www.tuicool.com/articles/Uzmmue

Java 语言的 XPath API

http://www.ibm.com/developerworks/cn/xml/x-javaxpathapi.html

分享到:
评论

相关推荐

    Java 语言的 XPath API

    XPath API 还支持更复杂的查询,例如选择满足特定条件的节点、选取属性值、使用函数和变量等。例如,你可以用 XPath 表达式 `//book[price&gt;30]` 来获取价格高于 30 的图书,或者使用 `//book/@category` 来获取所有...

    Java 语言的 XPath API.docx

    在Java中使用XPath API,首先需要导入必要的库,然后创建`XPathFactory`实例,接着通过工厂创建`XPath`对象。之后,可以使用`XPath`对象的`compile()`方法编译XPath表达式,并用`evaluate()`方法执行查询。查询结果...

    xPath-API文档

    6. 使用XPath:在XSLT、DOM解析和其他XML处理中应用XPath的例子。 7. 实战演练:提供一系列练习题,帮助读者巩固XPath知识。 8. 常见问题与解决:解答XPath使用中可能遇到的问题。 学习XPath对于XML处理非常重要,...

    xPath的API

    XPath(XML Path Language)是一种在XML文档中查找信息的语言,它是W3C标准的一部分,用于在XML文档中导航并选取节点。XPath的API是编程语言中用于...掌握XPath和其API的使用,能极大地提高处理XML文档的效率和准确性。

    htmlcleaner使用方法及xpath语法初探

    【HtmlCleaner使用方法】 1. **初始化HtmlCleaner**: 创建`HtmlCleaner`实例,如`HtmlCleaner cleaner = new HtmlCleaner();` 2. **解析HTML文档**: 使用`clean`方法读取HTML文件并生成TagNode对象,如`...

    XPATH开发帮助文档

    XPath实例展示了如何使用这些概念来选取和筛选XML文档中的具体信息。例如,使用`//title[last()]`可以选取最后一个title元素,`/@attribute`选取指定元素的所有属性,而`normalize-space(text())`则用于标准化并提取...

    火狐老版本+xpath插件(适合python+xpath爬虫使用)

    在Python爬虫中,XPath通常与`lxml`库结合使用。`lxml`是一个高效且功能强大的XML和HTML处理库,它支持XPath 1.0规范。使用XPath表达式,开发者可以轻松地选取HTML树中的特定节点,获取文本、属性值,甚至可以进行...

    AS2.0的XML API参考

    - 或者,在访问类方法时使用类的全限定名作为前缀(例如 `mx.xpath.XPathAPI.method_name`)。 ##### 支持的XPath路径表达式 以下是Flash支持的一些常见的XPath路径表达式: - **绝对路径**:如 `/item/title`,...

    dom4j中xpath的使用

    **DOM4J中XPath的使用** ...了解XPath的语法和DOM4J的API,你就能高效地处理XML文档,无论是查找、修改还是提取信息。记住,实践是检验理解的最好方式,多写代码,多尝试不同的XPath表达式,你的技能会越来越熟练。

    xpath 依赖包及开发手册

    例如,你可以使用XPath选择器找到XML文档中的特定节点,然后利用DOM4j的API进行修改或添加新的元素。 在实践中,XPath可以极大地简化XML数据的处理。例如,要找到XML文档中所有id为"example"的元素,你可以使用...

    Java中使用xpath获取xml中的数据

    1. `javax.xml.xpath`:这个包提供了XPath API,包括XPathFactory、XPath和XPathExpression等类。 2. `javax.xml.parsers`:这个包包含了DocumentBuilderFactory和DocumentBuilder,用于构建DOM(Document Object ...

    XPath注入漏洞利用工具XPath-XCat.zip

    XCat是一个命令行程序,用于辅助XPath注入漏洞的利用。XCat使用Python编写并开放源代码。XCat正常使用需要python的SimpleXMLWriter模块。 标签:XPath

    xpath-helper.zip

    lxml提供了对XPath的强力支持,它具有高性能和易于使用的API。使用lxml,我们可以方便地编写代码来解析XML或HTML文档,并利用XPath表达式来定位我们需要的数据。例如: ```python from lxml import etree # 加载...

    IE下获取XPATH小工具源码_xpath_

    XPath使用路径表达式来选取节点,这些路径表达式类似于文件系统路径,用于定位文件。例如,"/html/body/p"表示选取HTML文档中所有`&lt;p&gt;`元素。XPath还支持轴的概念,如祖先轴(ancester-axis)、子元素轴(child-axis...

    xpath-helper 插件及使用方法

    XPath Helper是一款强大的Chrome浏览器插件,专为网页元素定位和数据提取而设计。它使得开发者和数据抓取者能够方便地...通过熟练掌握XPath Helper的使用,可以更好地应对复杂的网页结构,提高数据获取的精准度和效率。

    XPathTutorial.zip

    6. **XPath在编程中的应用**:展示如何在Java、Python等编程语言中使用XPath API进行XML处理。 7. **案例研究**:提供实例来演示XPath在实际问题中的解决方案。 8. **XPath 1.0和XPath 2.0的区别**:对比XPath的两...

    Xpath生成器,自动生成XPATH,C#版

    XPath(XML Path ...使用XPath生成器可以显著提高开发效率,减少手动编写XPath表达式的错误。C#作为.NET框架的主要编程语言,提供了丰富的XML处理支持,结合这个XPath生成器,可以更好地进行XML相关的开发工作。

    Selenium WebDriver中使用By.Xpath快速定位页面元素

    Selenium WebDriver 中使用 By.Xpath 快速定位页面元素 Selenium WebDriver 是一个自动化测试工具,可以模拟用户交互来对 Web 应用程序进行测试。其中,定位页面元素是自动化测试的关键步骤。By.Xpath 是一种快速...

    XPath Helper版本2.0.2

    总的来说,XPath Helper 2.0.2是一个强大的辅助工具,它为处理网页内容提供了一个直观且高效的途径,尤其对于那些需要频繁使用XPath的用户来说,这款插件无疑是提高工作效率的一大利器。无论是进行网页开发、测试...

    xpath使用手册

    归纳整理的xpath使用手册,在自动化工作中,xpath使用很频繁。

Global site tag (gtag.js) - Google Analytics