请原谅,如果这是非常基本的话。我一直试图在行数组中遍历每个单元格,包括标题单元格。我可以在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>
单元格”?
使用 .xpath()代替这些Nokogiri XML元素是否可行/更好?
答案 0 :(得分:7)
您想要使用以下任一项:
# thang[n] is a Nokogiri <tr> node
cells = thang[n].css('th,td')
cells = thang[n].xpath('./th | ./td')
请注意,CSS版本将匹配任何嵌入式表格(如果您有这样的恐怖),而XPath版本只匹配该行的直接子级。