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
相关推荐
XPath API 还支持更复杂的查询,例如选择满足特定条件的节点、选取属性值、使用函数和变量等。例如,你可以用 XPath 表达式 `//book[price>30]` 来获取价格高于 30 的图书,或者使用 `//book/@category` 来获取所有...
在Java中使用XPath API,首先需要导入必要的库,然后创建`XPathFactory`实例,接着通过工厂创建`XPath`对象。之后,可以使用`XPath`对象的`compile()`方法编译XPath表达式,并用`evaluate()`方法执行查询。查询结果...
6. 使用XPath:在XSLT、DOM解析和其他XML处理中应用XPath的例子。 7. 实战演练:提供一系列练习题,帮助读者巩固XPath知识。 8. 常见问题与解决:解答XPath使用中可能遇到的问题。 学习XPath对于XML处理非常重要,...
XPath(XML Path Language)是一种在XML文档中查找信息的语言,它是W3C标准的一部分,用于在XML文档中导航并选取节点。XPath的API是编程语言中用于...掌握XPath和其API的使用,能极大地提高处理XML文档的效率和准确性。
【HtmlCleaner使用方法】 1. **初始化HtmlCleaner**: 创建`HtmlCleaner`实例,如`HtmlCleaner cleaner = new HtmlCleaner();` 2. **解析HTML文档**: 使用`clean`方法读取HTML文件并生成TagNode对象,如`...
XPath实例展示了如何使用这些概念来选取和筛选XML文档中的具体信息。例如,使用`//title[last()]`可以选取最后一个title元素,`/@attribute`选取指定元素的所有属性,而`normalize-space(text())`则用于标准化并提取...
在Python爬虫中,XPath通常与`lxml`库结合使用。`lxml`是一个高效且功能强大的XML和HTML处理库,它支持XPath 1.0规范。使用XPath表达式,开发者可以轻松地选取HTML树中的特定节点,获取文本、属性值,甚至可以进行...
- 或者,在访问类方法时使用类的全限定名作为前缀(例如 `mx.xpath.XPathAPI.method_name`)。 ##### 支持的XPath路径表达式 以下是Flash支持的一些常见的XPath路径表达式: - **绝对路径**:如 `/item/title`,...
**DOM4J中XPath的使用** ...了解XPath的语法和DOM4J的API,你就能高效地处理XML文档,无论是查找、修改还是提取信息。记住,实践是检验理解的最好方式,多写代码,多尝试不同的XPath表达式,你的技能会越来越熟练。
例如,你可以使用XPath选择器找到XML文档中的特定节点,然后利用DOM4j的API进行修改或添加新的元素。 在实践中,XPath可以极大地简化XML数据的处理。例如,要找到XML文档中所有id为"example"的元素,你可以使用...
1. `javax.xml.xpath`:这个包提供了XPath API,包括XPathFactory、XPath和XPathExpression等类。 2. `javax.xml.parsers`:这个包包含了DocumentBuilderFactory和DocumentBuilder,用于构建DOM(Document Object ...
XCat是一个命令行程序,用于辅助XPath注入漏洞的利用。XCat使用Python编写并开放源代码。XCat正常使用需要python的SimpleXMLWriter模块。 标签:XPath
lxml提供了对XPath的强力支持,它具有高性能和易于使用的API。使用lxml,我们可以方便地编写代码来解析XML或HTML文档,并利用XPath表达式来定位我们需要的数据。例如: ```python from lxml import etree # 加载...
XPath使用路径表达式来选取节点,这些路径表达式类似于文件系统路径,用于定位文件。例如,"/html/body/p"表示选取HTML文档中所有`<p>`元素。XPath还支持轴的概念,如祖先轴(ancester-axis)、子元素轴(child-axis...
XPath Helper是一款强大的Chrome浏览器插件,专为网页元素定位和数据提取而设计。它使得开发者和数据抓取者能够方便地...通过熟练掌握XPath Helper的使用,可以更好地应对复杂的网页结构,提高数据获取的精准度和效率。
6. **XPath在编程中的应用**:展示如何在Java、Python等编程语言中使用XPath API进行XML处理。 7. **案例研究**:提供实例来演示XPath在实际问题中的解决方案。 8. **XPath 1.0和XPath 2.0的区别**:对比XPath的两...
XPath(XML Path ...使用XPath生成器可以显著提高开发效率,减少手动编写XPath表达式的错误。C#作为.NET框架的主要编程语言,提供了丰富的XML处理支持,结合这个XPath生成器,可以更好地进行XML相关的开发工作。
Selenium WebDriver 中使用 By.Xpath 快速定位页面元素 Selenium WebDriver 是一个自动化测试工具,可以模拟用户交互来对 Web 应用程序进行测试。其中,定位页面元素是自动化测试的关键步骤。By.Xpath 是一种快速...
总的来说,XPath Helper 2.0.2是一个强大的辅助工具,它为处理网页内容提供了一个直观且高效的途径,尤其对于那些需要频繁使用XPath的用户来说,这款插件无疑是提高工作效率的一大利器。无论是进行网页开发、测试...
归纳整理的xpath使用手册,在自动化工作中,xpath使用很频繁。