- 浏览: 2167944 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
sunzeshan:
找了很久,用了这个插件解决问题啦。谢谢
eclipse jetty debug source not found -
xiaosong0112:
您好,请问为什么要这样设置呢,原理是什么?在网上很多转帖都没有 ...
maven的jetty插件提示No Transaction manager found导致启动慢的解决方法 -
eimhee:
tjzx 写道畅搜谷歌:http://dian168.cc/打 ...
Google 镜像站搜集 -
tjzx:
畅搜谷歌:http://dian168.cc/打开的是“最火源 ...
Google 镜像站搜集 -
eimhee:
finallygo 写道你这属于"头痛医头脚痛医脚& ...
解决linux下too many file问题
曾经用HTMLParser过滤HTML, 但发现HTMLParser有时候对不规范的HTMl解析不了, 并且不支持xpath,
后来在Web-Harvest开源爬虫网站找到了HTMLParser,能够帮助我们将HTML 文档 转化为结构化的XML文档。虽然目前已经有了类似这样的工具,但是HtmlCleaner 能够完成几乎所有的HTML转换,而且不到30k,这是他们值得称道的地方。
1.HtmlCleaner的文档对象模型现在拥有了一些函数,处理节点和属性,所以现在在序列化之前搜索或者编辑是非常容易的。
2.提供基本
HtmlCleaner DOM的XPath支持
3. 解析后编程轻量级文档对象,能够很容易的被转换到DOM或者JDom标准文档,或者通过各种方式(压缩,打印)连续输出XML。
转换完成后, 能用JDOM,dom4j对文当进行处理
package com.citgee.webclip; import org.htmlcleaner.*; import java.net.*; import java.io.*; import java.util.*; import org.jdom.*; //import org.jdom.output.*; import org.jdom.contrib.helpers.XPathHelper; import org.jdom.filter.Filter; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; import org.jdom.xpath.XPath; public class WebClipUtils { public static Document getDocumentByURL(String url,String charset) throws MalformedURLException, IOException{ HtmlCleaner htmlCleaner = new HtmlCleaner(); CleanerProperties props = htmlCleaner.getProperties(); TagNode node = htmlCleaner.clean(new URL(url),charset); JDomSerializer jdomSerializer = new JDomSerializer(props,true); Document doc = jdomSerializer.createJDom(node); return doc; } public static List<Element> getElementsByTagName(Document doc,String tagName){ List<Element> eleList = new ArrayList<Element>(); buildList(doc.getRootElement(),tagName,eleList); return eleList; } private static void buildList(Element rootEle,String tagName,List<Element> eleList){ if(rootEle.getName().equals(tagName)){ eleList.add(rootEle); } List list = rootEle.getChildren(); for(Iterator iter = list.iterator();iter.hasNext();){ Element ele = (Element)iter.next(); buildList(ele,tagName,eleList); } } public static void printElement(Element ele) throws IOException{ XMLOutputter outputer = new XMLOutputter(); Format format = outputer.getFormat(); format.setEncoding("GB2312"); outputer.setFormat(format); outputer.output(ele, System.out); } public static void main(String[] args) throws Exception{ HtmlCleaner htmlCleaner = new HtmlCleaner(); CleanerProperties props = htmlCleaner.getProperties(); // TagNode node = htmlCleaner.clean(new URL("http://www.baidu.com")); TagNode node = htmlCleaner.clean(new URL("http://www.huanqiu.com"),"UTF-8"); // XmlSerializer xmlSerializer = new PrettyXmlSerializer(props); // StringWriter writer = new StringWriter(); // xmlSerializer.writeXml(node, writer, "GB2312"); // System.out.println(writer.toString()); JDomSerializer jdomSerializer = new JDomSerializer(props,true); Document doc = jdomSerializer.createJDom(node); Element rootEle = doc.getRootElement(); System.out.println(XPathHelper.getPathString(rootEle)); final String tagName = "div"; List list = getElementsByTagName(doc,"div"); System.out.println(list.size()); Iterator iter = list.iterator(); while (iter.hasNext()) { Element ele = (Element) iter.next(); System.out.println(); System.out.println("*****************************************"); System.out.println(XPathHelper.getPathString(ele)); System.out.println("*****************************************"); printElement(ele); } } } public class HtmlClean { public void cleanHtml(String htmlurl, String xmlurl) { try { long start = System.currentTimeMillis(); HtmlCleaner cleaner = new HtmlCleaner(); CleanerProperties props = cleaner.getProperties(); props.setUseCdataForScriptAndStyle(true); props.setRecognizeUnicodeChars(true); props.setUseEmptyElementTags(true); props.setAdvancedXmlEscape(true); props.setTranslateSpecialEntities(true); props.setBooleanAttributeValues("empty"); TagNode node = cleaner.clean(new File(htmlurl)); System.out.println("vreme:" + (System.currentTimeMillis() - start)); new PrettyXmlSerializer(props).writeXmlToFile(node, xmlurl); System.out.println("vreme:" + (System.currentTimeMillis() - start)); } catch (IOException e) { e.printStackTrace(); } } }
评论
6 楼
SE_XiaoFeng
2013-04-15
看的我是晕晕乎乎的。
5 楼
tianhewulei
2010-04-15
NEKOHTML其实也不错...
4 楼
eimhee
2010-04-15
xiaoyiz 写道
我觉得你没必要。。。htmlcleaner本身就支持xpath来查找。。在用jdom dom4j sax之类的再进行解析感觉多此一举了。。。
例如:查找一个<div class='weatherYubaoBox'><p>其他N多节点</p></div>
Object[] weatherBoxInfoObjects = node.evaluateXPath("//div[@class='weatherYubaoBox']//table");
例如:查找一个<div class='weatherYubaoBox'><p>其他N多节点</p></div>
Object[] weatherBoxInfoObjects = node.evaluateXPath("//div[@class='weatherYubaoBox']//table");
htmlcleaner支持xpath的功能不全
3 楼
xiaoyiz
2010-04-14
我觉得你没必要。。。htmlcleaner本身就支持xpath来查找。。在用jdom dom4j sax之类的再进行解析感觉多此一举了。。。
例如:查找一个<div class='weatherYubaoBox'><p>其他N多节点</p></div>
Object[] weatherBoxInfoObjects = node.evaluateXPath("//div[@class='weatherYubaoBox']//table");
例如:查找一个<div class='weatherYubaoBox'><p>其他N多节点</p></div>
Object[] weatherBoxInfoObjects = node.evaluateXPath("//div[@class='weatherYubaoBox']//table");
2 楼
whaosoft
2010-04-12
这个很好 用吗?
1 楼
sdh5724
2010-04-04
性能如何, 每秒能处理几M HTML?
发表评论
-
MySQLNonTransientConnectionException: No operations allowed
2015-05-19 16:47 2329最近在调试会发现“ No operations allow ... -
mysql 执行计划优化
2013-04-07 17:46 1543一条简单的SQL 语句竟花了15.87 sec, ... -
ThreadLocal 引起的内存泄露
2012-10-18 17:48 2416最近在用LOADRUNNER做性能测试, 运行几个小时后, ... -
lucene 反向索引原理
2012-07-20 12:47 1993lucene是一个高性能的全文搜索工具, 使用反向索引结构。 ... -
tomcat7在UBUNTU上自动启动
2012-06-11 12:55 2764为了让tomcat自动启动当电脑重起时, 你必须添加一个脚本, ... -
hadoop中的Writable分析
2012-06-07 11:27 3369hadoop 要使一个类能序例化, 要实现Writabl ... -
在UBUNTU安装NUTCH(十个简单的步骤)
2012-06-06 17:32 4028下面十个步骤能安装Nutch, 并且能爬行你的网站, 创建你自 ... -
深入Lucene的索引文件
2012-02-01 16:50 6894Lucene的索引里面存了些什么,如何存放的,也即Luc ... -
EasyMock and IllegalStateException
2012-01-31 15:09 1342When writing a portlet and tryi ... -
Java Enum的原理
2011-05-03 09:19 1826Java Enum 类型的语法结构尽管和 java 类的语法不 ... -
用JAXB从对象生成XML
2011-04-26 08:54 2992import java.io.FileOutputStream ... -
jdk6 WebService入门
2011-03-10 23:04 3405一、 Web Services简介 ... -
dom4j处理超大XML
2010-12-26 23:35 4854英文原文 : http://dom4j.sourceforge ... -
httpclient3 自动登陆淘宝, 开心网
2010-11-09 22:09 10013前提:需要用到的java包 commons-httpclien ... -
Lucene实时索引构建
2010-11-06 23:11 7431Lucene可以增量的添加一 ... -
分享Java并发最佳书籍Java Concurrency in Practice Java并发最佳书籍 下载
2010-10-21 08:31 13452好久没有上来更新过了,最近在学习线程池实现,参考了 Tomc ... -
Spring Hibernate3 配置 C3P0
2010-10-15 00:31 7565由于Hibernate3不推荐使用DBCP, 所以把连接池换成 ... -
将依赖包加入到本地maven库
2010-07-22 16:47 2903要将依赖包加入到本地maven库 mvn instal ... -
Maven Dependency设置,详解!
2010-07-21 17:08 2519用了Maven,所需的JAR包 ... -
Inner Join with hibernate and HQL
2010-07-18 12:24 2184String queryStri ...
相关推荐
HtmlCleaner是一个开源的Java语言的Html文档解析器。 HtmlCleaner能够重新整理HTML文档的每个元素并生成结构良好(Well-Formed)的 HTML 文档。默认它遵循的规则是类似于大部份web浏览器为创文档对象模型所使用的规则...
5. **安全的HTML过滤**:对于需要展示用户生成内容的场景,HTMLcleaner可以作为一个安全的过滤器,防止XSS(跨站脚本攻击)的发生。它可以移除潜在危险的标签和属性,比如`<script>`和`<iframe>`,从而保护应用免受...
HTMLCleaner允许用户对HTML文档进行深度定制,通过去除不必要的标签或向页面中添加新的元素,从而实现对网页内容的个性化处理。这对于网页抓取、数据挖掘以及自动化测试等场景非常有用。例如,你可以使用HTMLCleaner...
HTMLCleaner是一款强大的HTML清理和过滤工具,主要目的是在处理用户输入的HTML内容时,过滤掉不安全的字符和元素,防止跨站脚本(XSS)攻击。XSS攻击是一种常见的网络安全问题,通过注入恶意脚本到网页,攻击者可以...
3. **标签和属性过滤**:通过配置自定义的规则,HTMLCleaner可以允许或禁止特定的HTML标签和属性。这在防止XSS(Cross-Site Scripting)攻击或限制可接受的HTML内容时非常有用。 4. **DOM操作**:解析后的HTML会被...
HtmlCleaner提供了丰富的配置选项,允许用户根据实际需求进行定制化的清理工作,比如设置字符编码、转换属性格式、过滤标签或属性等。这些高级功能为开发者提供了便利,使得HTML的清理工作能够更加精细和高效。 在...
1. **HTML清理与标准化**:HtmlCleaner通过解析HTML文档并将其转换为干净的DOM(文档对象模型)树,可以去除广告、脚本、样式表等非正文内容,同时修复不规范的HTML标签,使文档结构更加规整。 2. **标签过滤与替换...
HtmlCleaner遵循大部分Web浏览器构建DOM时的规则,但同时也允许用户自定义标签和规则集以适应特定的过滤和匹配需求。 【XPath简介】 XPath(XML Path Language)是一种在XML文档中查找信息的语言,用于选取XML文档...
HtmlCleaner的优势在于它提供了一种简单且可配置的方式来处理HTML内容,这对于网页抓取、数据提取、内容过滤等应用场景非常有用。同时,由于它是开源的,用户可以根据需要调整和扩展其功能,满足特定需求。例如,...
HtmlCleaner是一个开源的Java语言的Html文档解析器。HtmlCleaner能够重新整理HTML文档的每个元素并生成结构良好(Well-Formed)的 HTML 文档。默认它遵循的规则是类似于大部份web浏览器为创文档对象模型所使用的规则。...
HtmlCleaner能够重新整理HTML文档的每个元素并生成结构良好(Well-Formed)的 HTML 文档。默认它遵循的规则是类似于大部份web浏览器为创文档对象模型所使用的规则。然而,用户可以提供自定义tag和规则组来进行过滤和...
`htmlclean.jar` 是一个专门设计用于过滤和清理 HTML 代码的工具包,它可以帮助开发者从文本中移除不必要的 HTML 标签,使得内容更加纯净,便于后续处理。这个工具包包含了一个名为 `htmlcleaner-2.10.jar` 的库文件...
1. **文本过滤**:提供去除HTML标签、特殊字符和停用词等功能,以便在处理文本数据时减少噪声。 2. **标记化**:将连续的文本分割成可操作的单词或短语,这对于词汇分析和自然语言处理(NLP)任务至关重要。 3. **...
`HTMLCLEANER_LICENSE`可能涉及到项目中使用的HTML清理库的授权信息,确保合规使用第三方组件。 6. **学习与贡献** 对于希望深入了解Android邮件应用开发的开发者来说,K9mail源代码提供了丰富的学习资源。通过...