Я бы хотел разобрать таблицу с помощью 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