关于Jsoup的一个小问题

利用Jsoup可以实现对网页信息进行有效解析和提取,例如有网页内容如下:

<html>

<title>Hello, Jsoup!</title>

<body>

    <div id="gtop" class="footer-mid tol">

        <a href="http://jsoup.org/download">Jsoup的官方网站</a>

        <div class="w">欢迎大家使用Jsoup!</div>

    </div>

</body>

</html>

利用Jsoup提取标签的内容,代码如下:

Document doc = null;

try{

    //获取HTML文档对象

    doc = Jsoup.connect(strURL).get();

}catch(IOException ioe)

{

    ioe.printStackTrace();

}

//提取<title>标签的内容

String strTitle = doc.select("title").text();

//提取id属性值为gtop的<div>标签的内容

String strText = doc.select("div[id=gtop]").text();

//提取网页中的链接

String strURL = doc.select("a").first().absUrl("href");

...

Jsoup提供了强大的查询选择器Selector类帮助使用者用尽可能简短的查询获取相关的信息。但是,我在使用时发现了一个小问题,就是对class属性值含有空格的标签进行提取时,利用如下查询模式是提取不到结果的。以上面的例子进行说明:

//提取class属性值为footer-mid tol的<div>标签的内容

String strText = doc.select("div.footer-mid tol").text();

查询结果为空字符串,但是利用下述查询模式就会得到结果

//提取class属性值为footer-mid tol的<div>标签的内容

//正确格式

String strText = doc.select("div[class=footer-mid tol]").text();

但是,如果class属性值不含有空格,则如下两种方式都可以得到正确的结果

//提取class属性值为w的<div>标签的内容

String strText1 = doc.select("div.w").text();

String strText2 = doc.select("div[class=w]").text();

所以,在写程序时,还是尽可能用[attr=val]模式进行查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值