`
gstarwd
  • 浏览: 1538291 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

htmlcleaner 使用示例.

阅读更多

原文出处: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

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >   
  2. < html   xmlns = "http://www.w3.org/1999/xhtml "   xml:lang = "zh-CN"   dir = "ltr" >   
  3. < head >   
  4.     < meta   http-equiv = "Content-Type"   content = "text/html; charset=GBK" />   
  5.     < meta   http-equiv = "Content-Language"   content = "zh-CN" />   
  6.     < title > html clean demo </ title >   
  7. </ head >   
  8. < body >   
  9. < div   class = "d_1" >   
  10.     < ul >   
  11.         < li > bar </ li >   
  12.         < li > foo </ li >   
  13.         < li > gzz </ li >   
  14.     </ ul >   
  15. </ div >   
  16. < div >   
  17.     < ul >   
  18.         < li > < a   name = "my_href"   href = "1.html" > text-1 </ a > </ li >   
  19.         < li > < a   name = "my_href"   href = "2.html" > text-2 </ a > </ li >   
  20.         < li > < a   name = "my_href"   href = "3.html" > text-3 </ a > </ li >   
  21.         < li > < a   name = "my_href"   href = "4.html" > text-4 </ a > </ li >   
  22.     </ ul >   
  23. </ div >   
  24. </ body >   
  25. </ 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

  1. package  com.chenlb;  
  2.   
  3. import  java.io.File;  
  4.   
  5. import  org.htmlcleaner.HtmlCleaner;  
  6. import  org.htmlcleaner.TagNode;  
  7.   
  8. /**  
  9.  * htmlcleaner 使用示例.  
  10.  *  
  11.  * @author chenlb 2008-11-26 下午02:12:02  
  12.  */   
  13. public   class  HtmlCleanerDemo {  
  14.   
  15.     public   static   void  main(String[] args)  throws  Exception {  
  16.         HtmlCleaner cleaner = new  HtmlCleaner();  
  17.   
  18.         TagNode node = cleaner.clean(new  File( "html/html-clean-demo.html" ),  "GBK" );  
  19.         //按tag取.   
  20.         Object[] ns = node.getElementsByName("title" true );     //标题   
  21.   
  22.         if (ns.length >  0 ) {  
  23.             System.out.println("title=" +((TagNode)ns[ 0 ]).getText());  
  24.         }  
  25.         System.out.println("ul/li:" );  
  26.         //按xpath取   
  27.         ns = node.evaluateXPath("//div[@class='d_1']//li" );  
  28.         for (Object on : ns) {  
  29.             TagNode n = (TagNode) on;  
  30.             System.out.println("\ttext=" +n.getText());  
  31.         }  
  32.         System.out.println("a:" );  
  33.         //按属性值取   
  34.         ns = node.getElementsByAttValue("name" "my_href" true true );  
  35.         for (Object on : ns) {  
  36.             TagNode n = (TagNode) on;  
  37.             System.out.println("\thref=" +n.getAttributeByName( "href" )+ ", text=" +n.getText());  
  38.         }  
  39.     }  
  40. }  
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兼容性比较好。

分享到:
评论

相关推荐

    页面正文提取htmlcleaner-2.8.jar

    以下是一个简单的使用HtmlCleaner提取HTML正文的Java代码示例: ```java import org.htmlcleaner.*; public class HtmlCleanerDemo { public static void main(String[] args) { String ...

    htmlcleaner,活跃的.zip

    源代码中可能包含了示例、测试用例以及详细的文档,帮助开发者理解和使用这个库。 开源项目的性质意味着HTMLCleaner有一个活跃的社区,用户可以提交问题、贡献代码,或者参与讨论,从而共同推动项目的进步。这种...

    htmlcleaner html解析器

    **使用HTMLCleaner的步骤:** 1. 添加HTMLCleaner的JAR文件到项目类路径。 2. 创建`HtmlCleaner`实例并指定输入HTML字符串或文件。 3. 使用`clean()`方法解析HTML,得到`TagNode`对象,它是HTMLCleaner内部表示DOM的...

    HtmlCleaner-JAVA爬虫--编写第一个网络爬虫程序

    在本文中,我们将深入探讨如何使用HTMLCleaner来编写你的第一个Java爬虫程序。 首先,我们需要理解HTML爬虫的基本原理。网络爬虫是一种自动化程序,它遍历互联网上的网页,提取所需信息。在这个过程中,HTMLCleaner...

    HtmlCleaner 用法

    以下是一个简单的使用示例,展示了如何使用 HtmlCleaner 读取 HTML 并获取指定标签的内容: ```java import org.htmlcleaner.*; public class HtmlClearDemo { public static void main(String[] args) throws ...

    htmlcleaner使用方法及xpath语法初探

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

    网页爬虫demo 带htmlcleaner jar包

    在提供的DEMO中,以58同城的一个页面作为示例,展示了如何使用HTMLCleaner进行实际操作。58同城是一个知名的分类信息网站,其页面内容丰富,包含了各种各样的信息,是学习网页爬虫的好素材。你可以通过Chrome浏览器...

    java分析html算法(java网页蜘蛛算法示例)

    以下是一个使用`htmlcleaner`库将HTML清洗成XML并进行解析的示例: ```java import org.htmlcleaner.CleanerProperties; import org.htmlcleaner.HtmlCleaner; import org.htmlcleaner.TagNode; public class ...

    展示Html : 文本转HTML格式 解决Textarea换行问题

    标签包括“源码”和“工具”,这表明解决方案可能涉及到代码示例或使用特定的工具来实现转换。例如,可能是使用JavaScript、PHP、Python等编程语言的函数,或者是一些辅助工具,如正则表达式、HTML清理库等。 在...

    HTML抽取器Xsoup.zip

    示例代码: @Test public void testSelect() { String html = "&lt;html&gt;&lt;div&gt;&lt;a href='https://github.com'&gt;github.com&lt;/a&gt;&lt;/div&gt;&lt;/html&gt;"; Document document = Jsoup.parse(html); String ...

    xmlworker 中文PDF导出插件

    XMLWorker通过结合了HTMLCleaner和TagWorkerFactory的功能,能够理解和解析HTML和CSS,并将其转换为PDF元素。 2. HTML和CSS支持: XMLWorker支持HTML5和CSS3标准,这意味着它可以处理复杂的布局和样式,包括字体、...

    html转word,pdf

    在"html2pdf中文乱码解决方案.txt"文件中,可能包含了使用pd4ml进行HTML到PDF转换时解决中文乱码的具体步骤和代码示例。这个文本文件可能详细描述了如何设置正确的字符集、引入支持中文的字体,以及如何处理可能影响...

    Java正则表达式如何匹配特定html标签内的内容

    因此,当处理复杂的HTML文档时,使用专门的HTML解析库(如Jsoup或HTMLCleaner)是更好的选择,它们能够更加准确地解析HTML文档,并且可以避免正则表达式中可能出现的种种问题。 总结来说,虽然Java正则表达式能够...

Global site tag (gtag.js) - Google Analytics