Jsoup解析html某片段的问题

来源:互联网 发布:青云志网络总播放量 编辑:程序博客网 时间:2024/05/18 03:48

  • 案例
  • 问题分析
  • 解决办法

案例

在使用jsoup解析html中的某部分片段时,有时候会遇到解析不出字段。下面以案例进行讲解。

<tr>    <td class='center'>        <font class='blue'>            北京        </font>    </td>    <td>        36175    </td>    <td>        2.03    </td></tr><tr>    <td class='center'>        <font class='blue'>            盐城        </font>    </td>    <td>        5466    </td>    <td>        -0.26    </td></tr>

这是一段html中的字段,我在解析该字段时,无法获得其中的信息。如下是解析代码。

        //html为带解析的片段        Document document=Jsoup.parse(html);        Elements elements=document.select("tr");        for (Element ele:elements) {            String city=ele.select("td[class=center]").text();            int price=Integer.parseInt(ele.select("td").get(1).text());            double rose=Float.parseFloat(ele.select("td").get(2).text())*0.01;            System.out.println(city);        }

运行程序发现根本没办法获取内容。

问题分析

原来在解析html片段时,Jsoup自动将其补全为html。由于上面的形式是表格里面的一部分内容,所有需要补全。但Jsoup只会添加 信息,而且有可能会把一些信息删除。
如下,为上面html片段,补充的后果。这对解析没有什么帮助。

<html> <head></head> <body>  <font class="blue">北京</font>361752.03  <font class="blue">盐城</font>5466-0.26 </body></html>

解决办法

将表格对应的标签补齐。

String cc="<html>  <body> <table> <tbody>"+html.replace("{\"data\":\"", "").replace("\"}", "")+"</tbody> </table> </body> </html>";        Document document=Jsoup.parse(cc);        Elements elements=document.select("tr");        System.out.println(document);        for (Element ele:elements) {            String city=ele.select("td[class=center]").text();            int price=Integer.parseInt(ele.select("td").get(1).text());            double rose=Float.parseFloat(ele.select("td").get(2).text())*0.01;            System.out.println(city);        }

这就没问题,成功解决。

0 0
原创粉丝点击