一、Jsoup 简介
jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据,可以看作是java版的jQuery。
jsoup的主要功能如下:
§ 从一个URL,文件或字符串中解析HTML;
§ 使用DOM或CSS选择器来查找、取出数据;
§ 可操作HTML元素、属性、文本;
jsoup是基于MIT协议发布的,可放心使用于商业项目。官方网站:http://jsoup.org/
二、解析遍历HTML文档
Jsoup处理HTML文件是,是将用户输入的HTML文档,解析转换成一个Document对象进行处理。Jsoup一般支持以下几种来源内容的转换。
§ 解析一个html字符串
§ 解析一个body片段
§ 根据一个url地址加载Document对象
§ 根据一个文件加载Document对象
(1)字符串解析
在处理一个html字符串。我们可能需要对其进行解析,并提取其内容,或校验其格式是否完整,或者想修改它,检查里面的div标签没有闭合。Jsoup可以帮助我们轻松的解决这些问题。比如:
String html = "<html><head><title>Firstparse</title></head>"
+"<body><p>Parse HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
(2)解析body片段
假如我们现在有一个HTML片断 (比如. 一个 div 包含一对 p 标签; 一个不完整的HTML文档) 想对它进行解析。这个HTML片断可以是用户提交的一条评论或在一个CMS页面中编辑body部分。我们可以使用使用Jsoup.parseBodyFragment(String html)方法。
String html = "<div><p align="center"><imgalt="" width="60" height="80"src="/erp/UserFiles/Image/51.jpg" />这是P元素的内容</p>";
Document document = Jsoup.parseBodyFragment(html);
看到这里可能会有疑问,这个和上面的html片段是一样的嘛。没错是一样的,parseBodyFragment 方法创建一个空壳的文档,并插入解析过的HTML到body元素中。假如使用正常的 Jsoup.parse(Stringhtml) 方法,通常也可以得到相同的结果,但是明确将用户输入作为 body片段处理,以确保用户所提供的任何糟糕的HTML都将被解析成body元素。
Document.body()方法能够取得文档body元素的所有子元素,与doc.getElementsByTag("body")相同。
(3)从URL解析
有时候我们可能希望通过一个url地址,然后提取里面的内容,转换成document对象。我们以前可能是使用http client等模拟一个请求,然后取得返回内容等,使用Jsoup方便简单的解决这个问题。示例如下:
Document document = Jsoup.connect("http://www.baidu.com").get();