我想使用 Ruby 和 Nokogiri 从表中抓取数据。
有很多<td>
元素,但我只需要在 <br>
之后的国家/地区元素。问题是,<td>
元素不同。有时不仅仅是国家。
例如:
<td><a href="#">Title1</a><br>USA</td>
<td><a href="#">Title2</a><br>Michael Powell<br>UK</td>
<td><a href="#">Title3</a><br>Leopold Lindtberg<br>Ralph Meeker<br>Switzerland</td>
我要在结束前处理元素</td>
标记,因为国家始终是最后一个元素。
我该怎么做?
最佳答案
我会用这个:
require 'awesome_print'
require 'nokogiri'
html = '
<td><a href="#">Title1</a><br>USA</td>
<td><a href="#">Title2</a><br>Michael Powell<br>UK</td>
<td><a href="#">Title3</a><br>Leopold Lindtberg<br>Ralph Meeker<br>Switzerland</td>
'
doc = Nokogiri::HTML(html)
ap doc.search('td').map{ |td| td.search('text()').last.text }
[
[0] "USA",
[1] "UK",
[2] "Switzerland"
]
问题是您正在解析的 HTML 不会包含 <td>
行标签,因此您必须找到要解析的标签。相反,它们将散布在 <tr>
之间。标签,甚至可能不同 <table>
标签。因为您的 HTML 示例没有显示文档的真实结构,所以我帮不了您更多。
关于ruby - 在表格单元格中获取最后一句话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14266232/