我必须得到价格的内在价值:
<td align="center">Avg.Rate: $ 555</td>
如何使用Nokogiri做到这一点?
我试过了:
price_list('td[text()*="Avg.Rate: $"]') do |price|
price.text.split('$').last.to_price
但未获得成功。
答案 0 :(得分: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"
如果您要查找单个或第一个事件,请使用at
或at_css
。如果您要查找多次,请使用search
或css
。
仅供参考:Nokogiri使用jQuery compatible CSS selectors。
答案 1 :(得分:0)
您的xpath字符串应使用starts_with
:
price_list.xpath('td[starts-with(text(), "Avg.Rate: $")]')