jsoup提取特定标记下的元素

时间:2013-08-16 22:29:57

标签: jsoup

我试图在特定标签下提取几个元素 我有一堆<h5>我希望通过它们正下方的<h6><table>进行提取。 我遇到的问题是: a)我有几个<h5>标签 b)<h6><table>不是<h5>的孩子/兄弟姐妹。所以例如h5 > table将不起作用。

所以我最想得到的是: 从这个网站: http://tcat.nextinsight.com/routes.php?mrnid=453

13号线周一至周五,<h6>入站和表格,以及 13号航线周一至周五,<h6>出站和表格。

一旦我拥有整个表格,我就可以使用此示例How to get a table from an html page using JAVA来处理表格

示例结构:(也可以在给定的URL上找到)

<table width="890" border="0" cellspacing="3">
        <tr>
          <td colspan="20" bgcolor="#8cd2ef" class="heading"><h6>Outbound from center of Ithaca</h6></td>
        </tr>
        <br><h5>Route 13 - Saturday</h5><tr class="tableSub"><td>Green @ Commons</td>
<td>Seneca @ Commons</td>
<td>Third @ Hancock</td>
<td>Aldi</td>
<td>Lake @ Ithaca HS</td>
<td>Stewart Park</td>
<td>Shops at Ithaca Mall @ Sears</td>
</tr>

1 个答案:

答案 0 :(得分:1)

选择器:

h5:contains(Route 13 Monday - Friday) + table

用过:

Elements tables = doc.select("h5:contains(Route 13 Monday - Friday) + table");

将为您提供前面有<h5>内容"Route 13 Monday - Friday"的每个表格。

使用您提供的网址检查工作代码:

public static void main(String[] args) throws Exception {
    Document doc = Jsoup.connect("http://tcat.nextinsight.com/routes.php?mrnid=453").get();
    System.out.println(doc.title());
    Elements tables = doc.select("h5:contains(Route 13 Monday - Friday) + table");
    for (Element table : tables) {
        System.out.println(table);
        System.out.println("#\n#\n#\n#");
    }
}