2

如果这是非常基本的,请原谅。我一直在尝试遍历每个单元格,包括行数组中的标题单元格。我可以在 Nokogiri CSS 选择器中使用 OR 运算符吗?

thang= Nokogiri::HTML(IO.read "|cat page.html").css('table[@id="costbasisTable"] tr')

正确获取所有行,包括标题行(在后续页面上重复):

thang[0].inner_html
=> <th class="tLeft"></th><th>cellA2</th><th>cellA3data</th>

thang[1].inner_html
=> <td>cellB1</td><td>cellB2</td><td>cellB3data</td>

问题在于以下内容,如果该行仅包含th而不是td ,则可能返回空白:

N=0
thang[N].css("td").map{|c| c.text.strip.gsub(/\t.*/,"").delete ",".tr("&/|:;\n","_")}.to_a

.css(...)的哪个参数意味着“匹配任何<td>OR<th>单元格”?

对于这些 Nokogiri XML 元素,使用.xpath()是否可能/更好地完成?

4

1 回答 1

7

您想使用以下任一项:

# thang[n] is a Nokogiri <tr> node
cells = thang[n].css('th,td')
cells = thang[n].xpath('./th | ./td')

请注意,CSS 版本将匹配任何嵌入的表(如果您有这样的恐惧),而 XPath 版本将仅匹配该行的直接子代。

于 2012-05-29T05:10:07.257 回答