- 浏览: 1538291 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
原文出处:http://blog.chenlb.com/2008/11/htmlcleaner-use-demo.html
<!-- google_ad_section_start -->编程的时候,有时数据源从html来。那就要对html分析提取数据。好在java社区里有好有相关库来解析html,经使用比较:个人 觉得 htmlcleaner 比 htmlparser 好用。htmlcleaner 的 xpath特好用。也可能我对htmlparser不熟悉。
htmlcleaner 下载地址:htmlcleaner2_1.jar 源码下载:htmlcleaner2_1-all.zip
写一个测试用的html文件:html-clean-demo.html
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
- < html xmlns = "http://www.w3.org/1999/xhtml " xml:lang = "zh-CN" dir = "ltr" >
- < head >
- < meta http-equiv = "Content-Type" content = "text/html; charset=GBK" />
- < meta http-equiv = "Content-Language" content = "zh-CN" />
- < title > html clean demo </ title >
- </ head >
- < body >
- < div class = "d_1" >
- < ul >
- < li > bar </ li >
- < li > foo </ li >
- < li > gzz </ li >
- </ ul >
- </ div >
- < div >
- < ul >
- < li > < a name = "my_href" href = "1.html" > text-1 </ a > </ li >
- < li > < a name = "my_href" href = "2.html" > text-2 </ a > </ li >
- < li > < a name = "my_href" href = "3.html" > text-3 </ a > </ li >
- < li > < a name = "my_href" href = "4.html" > text-4 </ a > </ li >
- </ ul >
- </ div >
- </ body >
- </ html >
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"/> <meta http-equiv="Content-Language" content="zh-CN"/> <title>html clean demo</title> </head> <body> <div class="d_1"> <ul> <li>bar</li> <li>foo</li> <li>gzz</li> </ul> </div> <div> <ul> <li><a name="my_href" href="1.html">text-1</a></li> <li><a name="my_href" href="2.html">text-2</a></li> <li><a name="my_href" href="3.html">text-3</a></li> <li><a name="my_href" href="4.html">text-4</a></li> </ul> </div> </body> </html>
模拟需求:取出title,name="my_href" 的链接,div的class="d_1"下的所有li内容。下面用htmlcleaner写代码,HtmlCleanerDemo.java
- package com.chenlb;
- import java.io.File;
- import org.htmlcleaner.HtmlCleaner;
- import org.htmlcleaner.TagNode;
- /**
- * htmlcleaner 使用示例.
- *
- * @author chenlb 2008-11-26 下午02:12:02
- */
- public class HtmlCleanerDemo {
- public static void main(String[] args) throws Exception {
- HtmlCleaner cleaner = new HtmlCleaner();
- TagNode node = cleaner.clean(new File( "html/html-clean-demo.html" ), "GBK" );
- //按tag取.
- Object[] ns = node.getElementsByName("title" , true ); //标题
- if (ns.length > 0 ) {
- System.out.println("title=" +((TagNode)ns[ 0 ]).getText());
- }
- System.out.println("ul/li:" );
- //按xpath取
- ns = node.evaluateXPath("//div[@class='d_1']//li" );
- for (Object on : ns) {
- TagNode n = (TagNode) on;
- System.out.println("\ttext=" +n.getText());
- }
- System.out.println("a:" );
- //按属性值取
- ns = node.getElementsByAttValue("name" , "my_href" , true , true );
- for (Object on : ns) {
- TagNode n = (TagNode) on;
- System.out.println("\thref=" +n.getAttributeByName( "href" )+ ", text=" +n.getText());
- }
- }
- }
package com.chenlb; import java.io.File; import org.htmlcleaner.HtmlCleaner; import org.htmlcleaner.TagNode; /** * htmlcleaner 使用示例. * * @author chenlb 2008-11-26 下午02:12:02 */ public class HtmlCleanerDemo { public static void main(String[] args) throws Exception { HtmlCleaner cleaner = new HtmlCleaner(); TagNode node = cleaner.clean(new File("html/html-clean-demo.html"), "GBK"); //按tag取. Object[] ns = node.getElementsByName("title", true); //标题 if(ns.length > 0) { System.out.println("title="+((TagNode)ns[0]).getText()); } System.out.println("ul/li:"); //按xpath取 ns = node.evaluateXPath("//div[@class='d_1']//li"); for(Object on : ns) { TagNode n = (TagNode) on; System.out.println("\ttext="+n.getText()); } System.out.println("a:"); //按属性值取 ns = node.getElementsByAttValue("name", "my_href", true, true); for(Object on : ns) { TagNode n = (TagNode) on; System.out.println("\thref="+n.getAttributeByName("href")+", text="+n.getText()); } } }
cleaner.clean()中的参数,可以是文件,可以是url,可以是字符串内容。个人认为:比较常用的应该是evaluateXPath、 getElementsByAttValue、getElementsByName方法了。另外说明下,htmlcleaner 对不规范的html兼容性比较好。
发表评论
-
htmlunit 示例
2010-08-20 18:40 4366先下载依赖的相关JAR包:http://sourcefor ... -
HTMLParser的两种使用方法
2010-04-15 16:37 5414HTMLParser的两种使用方法 ... -
HtmlCleanner结合xpath用法
2010-04-15 13:24 3579文章分类:Java编程 ... -
基于Htmlparser的天气预报程序(续)
2010-04-14 13:53 1104zz:http://www.iteye.com/topic/6 ... -
httpclient(校内网)
2010-04-13 15:10 1326Java code <!-- C ... -
httpclient(校内网)
2010-04-13 15:10 1440httpclient(校内网),大家帮忙看看我的 http ... -
HTTPClient模拟登陆人人网
2010-04-13 14:58 1918zz: 目的: http://www.iteye. ... -
HtmlCleaner API
2010-04-13 13:40 4533HtmlCleaner API Create cleaner ... -
htmlcleaner惯用法
2010-04-13 13:39 1477Common usage Tipically the f ... -
htmlcleaner惯用法
2010-04-13 13:39 1549Common usage Tipically t ... -
http://htmlparser.com.cn/
2010-04-12 16:20 1070http://htmlparser.com.cn/ ... -
开源网络蜘蛛spider(转载)
2010-04-12 15:42 1350spider是搜索引擎的必须 ... -
基于Spindle的增强HTTP Spider
2010-04-12 15:33 1492zz:http://www.iteye.com/news ... -
Cobra: Java HTML 解析器
2010-04-12 15:32 2971Cobra 简介: Cobra是一个 ... -
用htmlparser分析并抽取正文
2010-04-12 15:26 1567我这次要介绍的是如何抽取正文,这部分是最为核心的.因为如果不能 ... -
HtmlParser初步研究
2010-04-12 15:18 947目的是快速入手,而不 ... -
基于Htmlparser的天气预报程序
2010-04-12 15:16 1089htmlparser是一个纯的java写的html解析的库,它 ...
相关推荐
以下是一个简单的使用HtmlCleaner提取HTML正文的Java代码示例: ```java import org.htmlcleaner.*; public class HtmlCleanerDemo { public static void main(String[] args) { String ...
源代码中可能包含了示例、测试用例以及详细的文档,帮助开发者理解和使用这个库。 开源项目的性质意味着HTMLCleaner有一个活跃的社区,用户可以提交问题、贡献代码,或者参与讨论,从而共同推动项目的进步。这种...
**使用HTMLCleaner的步骤:** 1. 添加HTMLCleaner的JAR文件到项目类路径。 2. 创建`HtmlCleaner`实例并指定输入HTML字符串或文件。 3. 使用`clean()`方法解析HTML,得到`TagNode`对象,它是HTMLCleaner内部表示DOM的...
在本文中,我们将深入探讨如何使用HTMLCleaner来编写你的第一个Java爬虫程序。 首先,我们需要理解HTML爬虫的基本原理。网络爬虫是一种自动化程序,它遍历互联网上的网页,提取所需信息。在这个过程中,HTMLCleaner...
以下是一个简单的使用示例,展示了如何使用 HtmlCleaner 读取 HTML 并获取指定标签的内容: ```java import org.htmlcleaner.*; public class HtmlClearDemo { public static void main(String[] args) throws ...
【HtmlCleaner使用方法】 1. **初始化HtmlCleaner**: 创建`HtmlCleaner`实例,如`HtmlCleaner cleaner = new HtmlCleaner();` 2. **解析HTML文档**: 使用`clean`方法读取HTML文件并生成TagNode对象,如`...
在提供的DEMO中,以58同城的一个页面作为示例,展示了如何使用HTMLCleaner进行实际操作。58同城是一个知名的分类信息网站,其页面内容丰富,包含了各种各样的信息,是学习网页爬虫的好素材。你可以通过Chrome浏览器...
以下是一个使用`htmlcleaner`库将HTML清洗成XML并进行解析的示例: ```java import org.htmlcleaner.CleanerProperties; import org.htmlcleaner.HtmlCleaner; import org.htmlcleaner.TagNode; public class ...
标签包括“源码”和“工具”,这表明解决方案可能涉及到代码示例或使用特定的工具来实现转换。例如,可能是使用JavaScript、PHP、Python等编程语言的函数,或者是一些辅助工具,如正则表达式、HTML清理库等。 在...
示例代码: @Test public void testSelect() { String html = "<html><div><a href='https://github.com'>github.com</a></div></html>"; Document document = Jsoup.parse(html); String ...
XMLWorker通过结合了HTMLCleaner和TagWorkerFactory的功能,能够理解和解析HTML和CSS,并将其转换为PDF元素。 2. HTML和CSS支持: XMLWorker支持HTML5和CSS3标准,这意味着它可以处理复杂的布局和样式,包括字体、...
在"html2pdf中文乱码解决方案.txt"文件中,可能包含了使用pd4ml进行HTML到PDF转换时解决中文乱码的具体步骤和代码示例。这个文本文件可能详细描述了如何设置正确的字符集、引入支持中文的字体,以及如何处理可能影响...
因此,当处理复杂的HTML文档时,使用专门的HTML解析库(如Jsoup或HTMLCleaner)是更好的选择,它们能够更加准确地解析HTML文档,并且可以避免正则表达式中可能出现的种种问题。 总结来说,虽然Java正则表达式能够...