Jsoup 之入门

一、jsoup 简介 部分摘自 http://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/ Java 程序在解析 HTML 文档时,相信你们都接触过 htmlparser 这个开源项目,Jsoup 功能比 htmlparser 更增强大,并且代码实现更加简单 jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套很是省力的 API,可经过 DOM,CSS 以及相似于 jQuery 的操做方法来取出和操做数据。 jsoup 的主要功能以下:html

  1. 从一个 URL,文件或字符串中解析 HTML;
  2. 使用 DOM 或 CSS 选择器来查找、取出数据;
  3. 可操做 HTML 元素、属性、文本; jsoup 是基于 MIT 协议发布的,可放心使用于商业项目。

Jsoup的代码至关简洁,Jsoup总共53个类,且没有任何第三方包的依赖,对比最终发行包9.8M的SAXON,实在算得上是短小精悍了。java

jsoup
├── examples #样例,包括一个将html转为纯文本和一个抽取全部连接地址的例子。    
├── helper #一些工具类,包括读取数据、处理链接以及字符串转换的工具
├── nodes #DOM节点定义
├── parser #解析html并转换为DOM树
├── safety #安全相关,包括白名单及html过滤
└── select #选择器,支持CSS Selector以及NodeVisitor格式的遍历

二、Jsoup 使用:node

下面先写一个简单的示例程序开始 Jsoup 的学习之旅:(该例子实现了直接从 url 地址入手 ,经过 Jsoup 解析该 url 网页源代码为一颗 dom 树,而后从这颗树中用 Jsoup 自带的与 JQuery 同样的选择器选择全部网页连接地址,打印出来,最后还增长了一个遍历整棵树的实现)安全

public static void main(String[] args) throws IOException {
	Validate.isTrue(args.length == 1, "Usage: Supply the url to fetch!");
	String url = args[0];
	System.out.println("Fetching " + url + "..." );
	
	//fecher the url and parse it to document
	Document doc = Jsoup.connect(url).get();
	
	//use the same method like JQuery to chose what element you want
	Elements links = doc.select("a[href]");
	
	System.out.println("\nLinks " + links.size());
	
	//print to see is it work right?
	for(Element link : links) {
		System.out.println("* a: " + link.attr("abs:href") + " " + link.text().trim());
	}
	
	//use give MyNodeVisitor to NodeTraversor 
	NodeTraversor traversor = new NodeTraversor(new MyNodeVisitor());
	//traversor to traverse the element what you give
	traversor.traverse(doc);	
}

下面给出 MyNodeVisitor 的代码:dom

public class MyNodeVisitor implements NodeVisitor {ide

@Override
public void head(Node arg0, int arg1) {
	// TODO Auto-generated method stub

}

@Override
public void tail(Node arg0, int arg1) {
	System.out.println(arg0.nodeName() + "--------" + arg1);

}

}工具

jsoup 帮助用户实现遍历任何一个给定的 element,遍历过程当中具体作什么事情,则是彻底由用户本身决定,只要实现 NodeVisitor 便可学习

相关文章
相关标签/搜索