关于Jsoup的一个小问题

ojs 发布于 2011/11/13 18:53
阅读 1K+
收藏 1

利用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]模式进行查询。

加载中
0
skft
skft

也遇到了同样的问题。。。

好像用div.footer-mid也可以匹配到。。。

返回顶部
顶部