Css 如何选择所有单元格<;th>;及<;td>;同样地

Css 如何选择所有单元格<;th>;及<;td>;同样地,css,html-parsing,nokogiri,Css,Html Parsing,Nokogiri,如果这是非常基本的,请原谅。我一直在尝试遍历每个单元格,包括行数组中的标题单元格。我可以在Nokogiri CSS选择器中使用OR运算符吗 thang= Nokogiri::HTML(IO.read "|cat page.html").css('table[@id="costbasisTable"] tr') 正确获取包括标题行(在后续页面上重复)在内的所有行: .css(…)的哪个参数表示“匹配任何或单元格” 对于这些Nokogiri XML元素,使用.xpath()是否可以/更好地执行此操

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

thang= Nokogiri::HTML(IO.read "|cat page.html").css('table[@id="costbasisTable"] tr')
正确获取包括标题行(在后续页面上重复)在内的所有行:

.css(…)的哪个参数表示“匹配任何
单元格”


对于这些Nokogiri XML元素,使用.xpath()是否可以/更好地执行此操作?

您希望使用以下任一选项:

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

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

我不确定Nokogiri是什么,但以下CSS选择器将起作用:
table tr>*
我无法获取
thang[0]。CSS(“table tr>*”
来捕获任何单元格。尝试了
thang[1]
,并将CSS选择器更改了一点
.CSS('td,th')
.xpath('./td |./th')
@taro谢谢,这对meThanks有效
cells=thang[n].css('*')
也匹配了我需要的标题和非标题单元格(不确定这里还包含什么*)
cells=thang[n].css('th,td')
的问题是顺序丢失<代码>单元格将首先包含所有
th
s,然后是所有
td
s。所以
给出了
['th','th','td','td']
。我希望得到所有的
th
s和
td
s,但保留它们的顺序:-(@PeterV.Mørch
doc.xpath('//th |//td')
确实保留了它们的顺序,
doc.xpath('//*[name()=“th”或name()=“td”])
N=0
thang[N].css("td").map{|c| c.text.strip.gsub(/\t.*/,"").delete ",".tr("&/|:;\n","_")}.to_a
# thang[n] is a Nokogiri <tr> node
cells = thang[n].css('th,td')
cells = thang[n].xpath('./th | ./td')