2012-08-01 23 views
-2

我怎样才能获取TR引入nokogiri的其中提到在这种结构中引入nokogiri的代码在HTML响应的TR我怎么能卖到这个结构中的HTML响应

<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> 
+1

表结构无效。 – az7ar 2012-08-01 10:48:52

+0

ok结构是这样的 – SSP 2012-08-01 10:57:00

+0

请在发布问题之前在这里检查SE ..并确保问题非常清楚与正确的数据。 – 2012-08-01 11:23:11

回答

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>是一个真正的常见问题。

0

有多种方式访问该文本,例如:

html = Nokogiri::HTML my_html_string 
row_text = html.at('//table[2]/tbody/tr/td/table/tr[2]').text 
+0

这一个不适合我 – SSP 2012-08-01 13:52:42

+1

这是因为你的实际HTML是不同的。 – taro 2012-08-01 14:04:01