Nokogiri如何遍历两个类的表的每一行

时间:2015-06-09 02:37:57

标签: html ruby web-scraping nokogiri

我正在尝试使用Nokogiri解析HTML表。该表已标记良好且没有结构问题,除了表头被嵌入为实际行而不是使用<thead>。我遇到的问题是我想要除了第一行之外的每一行,因为我对标题不感兴趣,而是跟随所有内容。这是表格结构的一个例子。

<table id="foo">
<tbody>
  <tr class="headerrow">....</tr>
  <tr class="row">...</tr>
  <tr class="row_alternate">...</tr>
  <tr class="row">...</tr>
  <tr class="row_alternate">...</tr>
</tbody>
</table>

我有兴趣只抓取课程rowrow_alternate的行。但是,就我所知,这种语法在Nokogiri中是不合法的:

doc.css('.row .row_alternate').each do |a_row|
  # do stuff with a_row
end

使用Nokogiri解决这个问题的最佳方式是什么?

3 个答案:

答案 0 :(得分:1)

我会试试这个:

PopLocalFrame()

答案 1 :(得分:1)

CSS选择器can contain multiple components separated by comma

  

以逗号分隔的选择器列表表示列表中每个选择器选择的所有元素的并集。 (逗号是U + 002C。)例如,在CSS中,当多个选择器共享相同的声明时,它们可以被分组为逗号分隔的列表。空格可能出现在逗号之前和/或之后。

doc.css('.row, .row_alternate').each do |a_row|
  p a_row.to_html
end

# "<tr class=\"row\">...</tr>"
# "<tr class=\"row_alternate\">...</tr>"
# "<tr class=\"row\">...</tr>"
# "<tr class=\"row_alternate\">...</tr>"

答案 2 :(得分:0)

尝试doc.at_css(".headerrow").remove,然后

doc.css("tr").each do |row| #some code end