如何在和之间解析数据

时间:2017-12-06 06:17:02

标签: javascript html beautifulsoup

我想在<td colspan="2">...</td>下解析<th>Number of samples</th>之间的信息。例如,在解析后面的html将返回64。

...
<tr class="border"> 
    <th>Average FPKM</th>
    <td colspan="2">0.8</td>
</tr>
<tr class="border">
    <th>Number of samples</th>
    <td colspan="2">64</td>
</tr>   
...

如何在这里只返回值64?

由于

4 个答案:

答案 0 :(得分:1)

首先给表格单元格一个id,在这个例子中我选择了tableCell

使用纯JavaScript而不使用jQuery,此代码完全符合您的要求

var value = document.getElementById("tableCell").innerHTML

使用jQuery,你可以这样做:

var value = $("#tableCell").html()

答案 1 :(得分:1)

获取,然后是父母,然后找到td。

$(document).ready(function() {
  var thGet=$('table').find('th');
  $.each(thGet, function (i, obj) {
    var text = $(obj).text();
    if(text == 'Number of samples' && $(obj).parent().find('td').attr('colspan') == '2')
    {
        alert($(obj).parent().find('td').html());
    }
  });
});

非jQuery,需要Javascript支持

var x = document.querySelectorAll('th');
for (var i = 0; i < x.length; i++) {
    if(x[i].innerHTML == 'Number of samples')
    {
        var c = x[i].parentNode.childNodes;
      var j;
      for (j = 0; j < c.length; j++) {
          if(c[j].tagName == 'TD' && c[j].colSpan == '2')
          {
            console.log(c[j].innerHTML);
          }
      }
    }
};

答案 2 :(得分:1)

您可以使用纯Javascript遵循此方法。我假设表tr的结构不会更改。

  1. 选择所有tr.border

  2. 迭代它们,并非常简单地找到哪个Number of samples。然后得到你想要的东西。

  3. window.onload = () => {
        let tr = document.querySelectorAll('tr.border')
        tr.forEach((elm) => {
            if(elm.innerText.indexOf('Number of samples') == 0)
                console.log(elm.querySelector('td').innerText)
        })
    };
    <table>
    <tr class="border"> 
        <th>Average FPKM</th>
        <td colspan="2">0.8</td>
    </tr>
    <tr class="border">
        <th>Number of samples</th>
        <td colspan="2">64</td>
    </tr>   
    </table>

    希望有所帮助

答案 3 :(得分:0)

假设您需要表的最后一行的最后一个单元格,并且您正在使用jQuery。

let result = $('table tr:last-child td:last-child').text();

Here is example