我想使用Nokogiri解析一张表格。我的做法如下:
def parse_table_nokogiri(html)
doc = Nokogiri::HTML(html)
doc.search('table > tr').each do |row|
row.search('td/font/text()').each do |col|
p col.to_s
end
end
end
我有一些表格,其中的行可能是这样的:
<tr>
<td>
Some text
</td>
</tr>
...而有些则具备这个功能。
<tr>
<td>
<font> Some text </font>
</td>
</tr>
我的XPath表达式适用于第二种情况,但不适用于第一种情况。是否有一种XPath表达式可以用来获取单元格内部节点的文本,以便我可以处理这两种情况?
我已将更改合并到我的片段中。
def parse_table_nokogiri(html)
doc = Nokogiri::HTML(html)
table = doc.xpath('//table').max_by {|table| table.xpath('.//tr').length}
rows = table.search('tr')[1..-1]
rows.each do |row|
cells = row.search('td//text()').collect {|text| CGI.unescapeHTML(text.to_s.strip)}
cells.each do |col|
puts col
puts "_____________"
end
end
end