ruby - 在表格单元格中获取最后一句话?

标签 ruby parsing nokogiri scraper

我想使用 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/

相关文章:

ruby - 我应该如何测试 Mailman 应用程序

parsing - 将标志变量传递给程序导致奇怪的输出

python - 如何将函数定义作为字符串传递给 python 脚本

ruby - 使用 Nokogiri 读写 xml 文件

ruby-on-rails - 自定义设计 Cookie

arrays - 将字符串转换为符号并将它们 ".push"转换为数组

R匹配键值向量与不规则字符串向量

ruby - 为什么 Nokogiri::CSS.xpath_for 返回一个数组?

ruby - 如何使用 Nokogiri 获取没有嵌套元素的内容

ruby-on-rails - rails : no route matches form for url?