【问题标题】:How to get line from table with Jsoup如何使用 Jsoup 从表中获取行
【发布时间】:2014-05-09 14:14:40
【问题描述】:

我有一个没有任何类或 id 的表格(页面上有更多表格),结构如下:

<table cellpadding="2" cellspacing="2" width="100%">
...  
     <tr>
          <td class="cell_c">...</td>
          <td class="cell_c">...</td>
          <td class="cell_c">...</td>
          <td class="cell">SOME_ID</td>
          <td class="cell_c">...</td>
     </tr>
...
</table>

我只想获取一行,其中包含 &lt;td class="cell"&gt;SOME_ID&lt;/td&gt; 并且 SOME_ID 是一个参数。


UPD。 目前我正在这样做:

doc = Jsoup.connect("http://www.bank.gov.ua/control/uk/curmetal/detail/currency?period=daily").get();

      Elements rows = doc.select("table tr");
      Pattern p = Pattern.compile("^.*(USD|EUR|RUB).*$");

      for (Element trow : rows) {
          Matcher m = p.matcher(trow.text());   
          if(m.find()){                   
               System.out.println(m.group());              
          }
      }

但是,如果大部分工作都是由 regexp 完成的,为什么我需要 Jsoup 呢?要下载 HTML 吗?

【问题讨论】:

  • 你有什么尝试吗?
  • 我只能选择所有 然后循环检查它们是否包含 SOME_ID。但问题是该页面有多个具有不同结构的表。
  • 你可以使用 xpath 吗?但看看这个:stackoverflow.com/questions/11816878/…
  • 内容 HTML 是否是静态的,意味着总是相同的结构?
  • @Daniel B,是的,它总是在同一页。

标签: html jsoup


【解决方案1】:

如果您有一个始终相同的通用 HTML 结构,并且您想要一个没有唯一 ID 或标识符属性的特定元素可以使用,您可以使用 Jsoup 中的 css 选择器语法来指定 DOM 中的位置-tree 找到你要查找的元素。

考虑一下这个 HTML 源代码:

<html>
 <head></head>
 <body>
  <table cellpadding="2" cellspacing="2" width="100%"> 
   <tbody>
    <tr> 
     <td class="cell">I don't want this one...</td> 
     <td class="cell">Neither do I want this one...</td> 
     <td class="cell">Still not the right one..</td> 
     <td class="cell">BINGO!</td> 
     <td class="cell">Nothing further...</td> 
    </tr> ... 
   </tbody>
  </table>
 </body>
</html>

我们要从第四个&lt;td&gt; 元素中选择并解析文本。 我们指定我们要使用td:eq(3) 选择DOM 树中索引为3 的&lt;td&gt; 元素。同样,我们可以使用td:lt(3) 选择索引3 之前的所有&lt;td&gt; 元素。您可能已经知道,这是equalless than

如果不使用first(),您将获得Elements 对象,但我们只需要第一个对象,因此我们指定了它。我们也可以使用get(0)

所以,下面的代码

Element e = doc.select("td:eq(3)").first();
System.out.println("Did I find it? " + e.text());

会输出

Did I find it? BINGO!

Jsoup cookbook 中的一些不错的阅读!

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签