通过给出一个已知的td来解析id值?

时间:2013-03-28 11:25:59

标签: ruby-on-rails ruby html-parsing nokogiri

在firePath的帮助下,我得到了这个:

.//*[@id='#table-row-51535240d7037e70b9000062']/td[1]

我的HTML的Parot看起来像这样:

  <table class="table table-bordered table-striped">
    <tbody>
      <tr>
      <tr>
       <tr id="#table-row-51535240d7037e70b9000062"> #this is the id that i want to get
      <td>             54           </td>            #this is the td that i know
      <td>
      <td>
       <td>Open</td>
    <td/>

我真正想要做的是,通过给出td值(54),我希望能够获得id(解析id),任何提示我如何实现?

提前致谢。

PS:对不起我的英语,以及我缺乏知识:)

2 个答案:

答案 0 :(得分:1)

首先,您的HTML无效(因为它包含嵌套的<tr>个节点)。 Nokogiri可以解析它,但如果可以,你应该在此之前解决它。

您可以通过以下ruby代码获取该ID:

doc.at_xpath("//td[contains(text(), '54')]/..")['id']
  1. //td[contains(text(), '54')]将抓取包含<td>的所有54个节点,/..将转到他们的父母。
  2. Document#at_xpath将只获取第一个匹配项
  3. ['id']将获取匹配节点的属性。

答案 1 :(得分:-1)

使用jquery

$(function(){
    // (i dont know if you have id for that td or not, it will be more easy if u do have id for that td)
    console.log($('table tbody tr td:first').closest('tr').attr('id')); // you can remove :first if you want to.
});

哎呀,我误解了你的问题,还有一件事,你的tr标签有问题。