六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 125|回复: 0

记录一下jsoup解析html(1)

[复制链接]

升级  28%

28

主题

28

主题

28

主题

秀才

Rank: 2

积分
92
 楼主| 发表于 2013-2-7 19:07:21 | 显示全部楼层 |阅读模式
首先说一下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选择器来查找、取出数据”--》点击看
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表