我有一个非常长的HTML文件,里面有很多不同的表。我只想解析某些表,但不幸的是,<table>
标记在这里没有帮助。
我想要解析的表如下所示:
<tr>
<td> TEXT1 </td>
<td> <a class='unique identifier' ...> TEXT2 </a></td>
</tr>
我想要"TEXT1"one_answers"TEXT2"。我知道如何获得"TEXT2":它总是在<a>
标签中,到目前为止我的解决方案是
//a[(@class="unique identifier")]
注意:有时"TEXT1"在<p>
标记中,有时则不然。有时它后面还有其他标签,如<b>
s、<br>
s或<em>
等。我认为我需要在找到的每个<a>
之后获得以前的<td>
内容,但忽略中间的任何其他元素。
我如何告诉Nokogiri,对于我找到的每一个"TEXT2",都可以返回并获得以前的<td>
,这样我就可以获得"TEXT1"?
我会做一些类似的事情:
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<tr>
<td> TEXT1 </td>
<td> <a class='uid'> TEXT2 </a></td>
</tr>
EOT
wrapping_tr = doc.at('//a[@class="uid"]/../..')
nodes = wrapping_tr.search('td')
nodes.map(&:text)
# => [" TEXT1 ", " TEXT2 "]
我建议花点时间阅读XPath文档,因为这是非常初级的。