-2

how can i fetch the tr which mention in code of this structure in nokogiri of in html response

<html>
  <body>
    <table>

    </table>

  <table>
    <tbody>
      <tr>
        <td>
          <table>
            <tr></tr>
              <tr><td> wanna this text as output.</td></tr>
          </table>
         </td>
      </tr>
    </tbody>
   </table>
  </body>
</html>
4

2 回答 2

0

有多种方法可以访问该文本,例如:

html = Nokogiri::HTML my_html_string
row_text = html.at('//table[2]/tbody/tr/td/table/tr[2]').text
于 2012-08-01T13:29:43.847 回答
0

我更喜欢使用 CSS 访问器,因为它们更宽容。使用您的 HTML 示例,我将使用:

irb(main):026:0> doc.search('table table tr').last.text
" wanna this text as output."

或者,XPATH 访问器是:

irb(main):042:0> doc.search('//table//table//tr').last.text
" wanna this text as output."

您正在寻找包含多行的嵌套表。你想要最后一行。

每当您在浏览器中查看 HTML 并看到<table><tbody>组合时,请务必小心。浏览器会进行大量代码修复,当您直接检索 HTML 并将其传递给解析器时,这可能会导致标签不存在。而且,您在浏览器输出中看到的那些不存在的标签会在您添加它们时抛弃您的 CSS 或 XPath 访问权限。特别是,<tbody>这是一个真正常见的问题。

于 2012-08-06T19:38:14.330 回答