Получение цены до и после скидки отдельно с использованием nokogiri n Ruby on Rails - PullRequest
0 голосов
/ 16 октября 2011

Я пытаюсь выучить на металлолом эти значения, которые я поставил в 2 разных задачах:

  1. получить 35,00 от всего текста
  2. получить 42,00 от всеготекст

ниже html:

<p style="font-size: 30px; margin-left: -10px; padding: 15px 0pt;">
$35.00 - $42.00
</p>

код, который я использую для получения всего текста, выглядит следующим образом:

node = html_doc.at_css('p')  
p node.text

Ответы [ 2 ]

2 голосов
/ 16 октября 2011

Вы можете получить весь текст из node.text, и это все, что вам нужно, чтобы пойти с Нокогири. Оттуда вы можете использовать scan, чтобы найти числа и биты списков (flatten и map), и все готово , Примерно так:

first, second = node.text.scan(/(\d+(?:\.\d+))/).flatten.map(&:to_f)

Это должно оставить вас с 35,0 в first и 42.0 в second. Если вы знаете, что числа - это цены с десятичными знаками, вы можете немного упростить регулярное выражение:

first, second = node.text.scan(/(\d+\.\d+)/).flatten.map(&:to_f)
1 голос
/ 17 октября 2011

mu ответ правильный, но кажется проще использовать split / splat.

first, second = *node.text.tr('$', '').split(' - ')
...