Css 如何选择所有单元格<;th>;及<;td>;同样地
如果这是非常基本的,请原谅。我一直在尝试遍历每个单元格,包括行数组中的标题单元格。我可以在Nokogiri CSS选择器中使用OR运算符吗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()是否可以/更好地执行此操
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ørchdoc.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')