2013-06-10 2 views
0

я должен получить внутреннее значение цены:Как получить значение из тега td?

<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.

FYI: Nokogiri использует jQuery compatible CSS selectors.

+0

Какие нестандартные селектора jquery css используют nokogiri? – pguardiario

0

Ваша строка должна XPath использовать starts_with:

price_list.xpath('td[starts-with(text(), "Avg.Rate: $")]')