从表标记中提取数据

时间:2014-02-24 10:28:07

标签: java html-parsing jsoup

我想使用jsoup提取td标签中的数据。

在下面的代码中,“BAGALKOT”是该市的名称,“KERUDI HOSPITAL RESEARCH CENTER”是该医院的名称。

同样,城市名称和医院名称在表格结构中多次出现在页面中。我想使用jsoup提取此数据。

任何人都可以帮我一些java代码。

<h2>Karnataka Hospitals List</h2>

    <tr bgcolor="#E4E4E4" height="40">
        <td height="40" align="center" class="whiteheading"><strong>Sl. No</strong></td>
        <td align="center" class="whiteheading"><strong class="whiteheading">City</strong></td>
        <td align="center" class="whiteheading"><strong>Hospital / Nursing Home</strong></td>
        <td align="center" class="whiteheading"><strong>Address</strong></td>
        <td align="center" class="whiteheading"><strong>State</strong></td>
    </tr>
    <tr height="60">
        <td width="64" align="left" bgcolor="#FFFFFF">1</td>
        <td class="copyrights" width="119" bgcolor="#FFFFFF">BAGALKOT</td>
        <td class="copyrights" width="211" bgcolor="#FFFFFF">KERUDI HOSPITAL    &amp; RESEARCH CENTRE</td>
        <td class="copyrights" bgcolor="#FFFFFF">EXTENSION,    HOSPITAL ROAD,BAGALKOT, KARNATAKA-587101.</td>
        <td class="copyrights" width="88" bgcolor="#FFFFFF">KARNATAKA</td>
    </tr>

1 个答案:

答案 0 :(得分:0)

您也可以单独使用CSS班级名称或标签名称提取数据:

Elements headings = doc.select("td[class=whiteheading]");
        Elements data = doc.select("td[class=copyrights]");

        for (Element el : headings) {
            System.out.print(el.text() + "\t\t\t");
        }

        System.out.println();
        for (Element el : data) {
            System.out.print(el.text() + "\t");
        }

给出,

Sl. No          City            Hospital / Nursing Home         Address         State           
BAGALKOT    KERUDI HOSPITAL & RESEARCH CENTRE   EXTENSION, HOSPITAL ROAD,BAGALKOT, KARNATAKA-587101.    KARNATAKA

以上代码将获取标题和数据的所有td标记值,并将它们放入您的控制台。这是序列号唯一的问题,因为它没有关联CSS类。因此,另一个选项可以是仅根据标签名称进行选择,然后将其过滤掉:

 Elements data = doc.select("td");

        for (Element el : data) {
            System.out.print(el.text() + "\t");
        }