0

我必须得到价格的内在价值:

<td align="center">Avg.Rate: $ 555</td>

如何使用 Nokogiri 做到这一点?

我试过了:

price_list('td[text()*="Avg.Rate: $"]') do |price|
price.text.split('$').last.to_price

但没有获得成功。

4

2 回答 2

2

使用 CSS:

price_list.at('td[text()^="Avg.Rate:"]')

回报:

=> #<Nokogiri::XML::Element:0x8042e6b0 name="td" attributes=[#<Nokogiri::XML::Attr:0x8042e624 name="align" value="center">] children=[#<Nokogiri::XML::Text:0x80431fb8 "Avg.Rate: $ 555">]>

抓住价值:

price_list.at('td[text()^="Avg.Rate:"]').text[/\d+/]
=> "555"

如果您正在寻找单个或第一次出现,请使用ator at_css。如果您要查找多次出现,请使用searchcss

仅供参考:Nokogiri 使用jQuery 兼容的 CSS 选择器

于 2013-06-10T19:26:17.440 回答
0

您的 xpath 字符串应使用starts_with

price_list.xpath('td[starts-with(text(), "Avg.Rate: $")]')
于 2013-06-10T14:39:53.497 回答