|
首先说一下html解析,在百度搜索“html解析”,其中开源中国给出的html解析方法数不胜数,这里截图一张

这么多解析方法到底采用哪一个呢,废话,当然是jsoup了,搜索引擎遛了一大圈,发现对jsoup的评价还挺高的,这就是“记录一下jsoup解析html”的由来了,嘿嘿
jsoup主要功能如下,摘自百度百科:
1. 从一个URL、文件或字符串中解析HTML;
2. 使用DOM或CSS选择器来查找、取出数据;
3. 可操作HTML元素、属性、文本;
jsoup是基于MIT协议发布的,可放心使用于商业项目。
首先看一段从html字符串解析的代码:
public static void main(String[] args) {String html = "<html><head><title>ITEYE</title></head><body>记录一下jsoup解析html</body></html>";Document doc = Jsoup.parse(html);System.out.println(doc.title());}
你懂的,结果输出ITEYE,解析就是这么几个步骤
所以解析来我们看一下Jsoup这个神奇的类,从官方文档可以看到:

Jsoup类的方法全是静态方法,如上图所有方法返回值都是Document类类型,而且也可以知道为什么它支持“从一个URL、文件或字符串中解析HTML”
在这些静态方法中,可以看到有一个参数名为baseUri的参数,因为HTML文档中会有很多例如链接、图片以及所引用的外部脚本、css文件等,baseUri参数的意思就是当HTML文档使用相对路径方式引用外部文件时,jsoup会自动为这些URL加上一个前缀,也就是这个baseUri。
再来一段从URL解析的代码,其中connect()方法也可以实现从URL解析:
public static void main(String[] args) throws IOException {// Document document=Jsoup.connect("http://www.baidu.com/").get();// Document document=Jsoup.connect("http://www.baidu.com/").data("a",// "a").cookie("a", "a").userAgent("nn").timeout(3000).post();Document document = Jsoup.parse(new URL("http://www.baidu.com"), 300);System.out.println(document.title());}
再来一段从文件解析的代码,其中baiduHtml.txt即百度首页html的文本文件:
public static void main(String[] args) throws IOException {File file=new File("baiduHtml.txt");Document document=Jsoup.parse(file, "UTF-8");System.out.println(document.title());}
“使用DOM或CSS选择器来查找、取出数据”--》点击看 |
|