【发布时间】:2012-05-29 13:10:07
【问题描述】:
如果这是非常基本的,请原谅。我一直在尝试遍历行数组中的每个单元格包括标题单元格。我可以在 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> 或<th> 单元格”?
用 .xpath() 代替这些 Nokogiri XML 元素是否可行/更好?
【问题讨论】:
-
我不确定 Nokogiri 是什么,但下面的 CSS 选择器可以工作:
table tr > * -
我无法让
thang[0].css("table tr > *")捕获任何单元格。尝试了thang[1],并稍微改变了 CSS 选择器 -
.css('td, th')或.xpath('./td|./th') -
@taro 谢谢,这对我有用
标签: css html-parsing nokogiri