HtmlCleaner使用说明文档

上传人:洪易 文档编号:32579511 上传时间:2018-02-11 格式:DOCX 页数:6 大小:21.05KB
返回 下载 相关 举报
HtmlCleaner使用说明文档_第1页
第1页 / 共6页
HtmlCleaner使用说明文档_第2页
第2页 / 共6页
HtmlCleaner使用说明文档_第3页
第3页 / 共6页
HtmlCleaner使用说明文档_第4页
第4页 / 共6页
HtmlCleaner使用说明文档_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《HtmlCleaner使用说明文档》由会员分享,可在线阅读,更多相关《HtmlCleaner使用说明文档(6页珍藏版)》请在金锄头文库上搜索。

1、HtmlCleaner Html 文 档 解 析 器HtmlCleaner 是 一 个 开 源 的 Java 语 言 的 Html 文 档 解 析 器 。 HtmlCleaner 能 够 重新 整 理 HTML 文 档 的 每 个 元 素 并 生 成 结 构 良 好 (Well-Formed)的 HTML 文 档 。 默 认它 遵 循 的 规 则 是 类 似 于 大 部 份 web 浏 览 器 为 创 文 档 对 象 模 型 所 使 用 的 规 则 。 然 而 , 用户 可 以 提 供 自 定 义 tag 和 规 则 组 来 进 行 过 滤 和 匹 配 。 它 被 设 计 的 小 , 快 速

2、, 灵 活 而 且独 立 。 HtmlCleaner 也 可 用 在 Java 代 码 中 , 当 命 令 行 工 具 或 Ant 任 务 。 解 析 后 编程 轻 量 级 文 档 对 象 , 能 够 很 容 易 的 被 转 换 到 DOM 或 者 JDom 标 准 文 档 , 或 者 通 过 各种 方 式 (压 缩 , 打 印 )连 续 输 出 XML。新 版 本 的 重 要 功 能 更 新 包 括 :1.HtmlCleaner 的 文 档 对 象 模 型 现 在 拥 有 了 一 些 函 数 , 处 理 节 点 和 属 性 , 所 以 现 在在 序 列 化 之 前 搜 索 或 者 编 辑 是

3、 非 常 容 易 的 。2.提 供 基 本 HtmlCleaner DOM 的 XPath 支 持 3.使 用 XML 配 置 温 江 让 创 建 定 制 tag 变 得 更 加 容 易 4.修 复 多 个 bug 以 及 API 改 进测 试 用 例 :import org.junit.Test;import org.junit.Assert;import org.htmlcleaner.HtmlCleaner;import java.io.IOException;public class HtmlCleanerTest Testpublic void testCleanUncloseTag

4、() throws IOException HtmlCleaner cleaner = new HtmlCleaner(abc);cleaner.setOmitXmlDeclaration(true);cleaner.setOmitHtmlEnvelope(true);cleaner.clean();Assert.assertEquals(abcn, cleaner.getXmlAsString();Testpublic void testCleanUncloseQuotes() throws IOException HtmlCleaner cleaner = new HtmlCleaner(

5、abcn); cleaner.setOmitXmlDeclaration(true);cleaner.setOmitHtmlEnvelope(true);cleaner.clean();Assert.assertEquals(abcnnn, cleaner.getXmlAsString();htmlcleaner 过滤 HTML曾经用 HTMLParser 过滤 HTML, 但发现 HTMLParser 有时候对不规范的 HTMl 解析不了, 并且不支持 xpath, 后来在 Web-Harvest 开源爬虫网站找到了 HTMLParser,能够帮助我们将 HTML 文档 转化为结构化的 XM

6、L 文档。虽然目前已经有了类似这样的工具,但是HtmlCleaner 能够完成几乎所有的 HTML 转换,而且不到 30k,这是他们值得称道的地方。1.HtmlCleaner 的文档对象模型现在拥有了一些函数,处理节点和属性,所以现在在序列化之前搜索或者编辑是非常容易的。 2.提供基本 HtmlCleaner DOM 的 XPath 支持 3. 解析后编程轻量级文档对象,能够很容易的被转换到 DOM 或者 JDom 标准文档,或者通过各种方式(压缩,打印)连续输出 XML。转换完成后, 能用 JDOM,dom4j 对文当进行处理Java 代码 1. package com.citgee.web

7、clip; 2. 3. import org.htmlcleaner.*; 4. 5. import .*; 6. import java.io.*; 7. import java.util.*; 8. 9. import org.jdom.*; 10./import org.jdom.output.*; 11.import org.jdom.contrib.helpers.XPathHelper; 12.import org.jdom.filter.Filter; 13.import org.jdom.output.Format; 14.import org.jdom.output.XMLO

8、utputter; 15.import org.jdom.xpath.XPath; 16. 17.public class WebClipUtils 18. 19. public static Document getDocumentByURL(String url,String charset) throws MalformedURLException, IOException 20. HtmlCleaner htmlCleaner = new HtmlCleaner(); 21. CleanerProperties props = htmlCleaner.getProperties();

9、22. TagNode node = htmlCleaner.clean(new URL(url),charset); 23. JDomSerializer jdomSerializer = new JDomSerializer(props,true);24. Document doc = jdomSerializer.createJDom(node); 25. return doc; 26. 27. 28. public static List getElementsByTagName(Document doc,String tagName) 29. List eleList = new A

10、rrayList(); 30. buildList(doc.getRootElement(),tagName,eleList); 31. return eleList; 32. 33. 34. private static void buildList(Element rootEle,String tagName,List eleList) 35. if(rootEle.getName().equals(tagName) 36. eleList.add(rootEle); 37. 38. List list = rootEle.getChildren(); 39. for(Iterator i

11、ter = list.iterator();iter.hasNext();) 40. Element ele = (Element)iter.next(); 41. buildList(ele,tagName,eleList); 42. 43. 44. 45. public static void printElement(Element ele) throws IOException 46. XMLOutputter outputer = new XMLOutputter(); 47. Format format = outputer.getFormat(); 48. format.setE

12、ncoding(GB2312); 49. outputer.setFormat(format); 50. outputer.output(ele, System.out); 51. 52. 53. 54. public static void main(String args) throws Exception 55. HtmlCleaner htmlCleaner = new HtmlCleaner(); 56. 57. CleanerProperties props = htmlCleaner.getProperties(); 58. 59. 60./ TagNode node = htm

13、lCleaner.clean(new URL(http:/); 61. TagNode node = htmlCleaner.clean(new URL(http:/),UTF-8); 62. 63./ XmlSerializer xmlSerializer = new PrettyXmlSerializer(props);64./ StringWriter writer = new StringWriter(); 65./ xmlSerializer.writeXml(node, writer, GB2312); 66./ System.out.println(writer.toString

14、(); 67. 68. JDomSerializer jdomSerializer = new JDomSerializer(props,true);69. Document doc = jdomSerializer.createJDom(node); 70. 71. Element rootEle = doc.getRootElement(); 72. 73. System.out.println(XPathHelper.getPathString(rootEle); 74. final String tagName = div; 75. List list = getElementsByT

15、agName(doc,div); 76. System.out.println(list.size(); 77. Iterator iter = list.iterator(); 78. while (iter.hasNext() 79. Element ele = (Element) iter.next(); 80. System.out.println(); 81. System.out.println(*); 82. System.out.println(XPathHelper.getPathString(ele); 83. System.out.println(*); 84. printElement(ele); 85. 86. 87. 88.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号