Вы можете игнорировать JavaScript, и есть лучший способ. Ты игнорируешь силу Нокогири. Нехорошо.
Вместо того, чтобы дать вам прямой ответ, вам будет полезно научиться "ловить рыбу" с помощью Нокогири.
В таком документе, как:
<html>
<body>
<p>foo</p>
<p>bar</p>
</body>
</html>
Я рекомендую начать с CSS-аксессоров, потому что они, как правило, более знакомы людям:
doc = Nokogiri::HTML(var_containing_html)
проанализирует и вернет HTML DOM в doc
.
doc.at('p')
вернет узел, который в основном указывает на первый <p>
узел.
doc.search('p')
вернет NodeSet всех подходящих узлов, который действует как массив, в этом случае все <p>
узлов.
doc.at('p').text
вернет текст внутри узла.
doc.search('p').map{ |n| n.text }
вернет весь текст в узлах <p>
в виде массива текстовых строк.
Поскольку ваш документ становится все более сложным, вам необходимо углубиться в детали. Иногда вы можете сделать это, используя CSS-аксессор, такой как 'body p'
или что-то подобное, а иногда вам нужно использовать XPath. Я не буду вдаваться в подробности, но есть отличные учебники и ссылки.
Уроки Nokogiri очень хороши. Пройдите через них, и они раскроют все, что вам нужно знать.
Кроме того, на Stack Overflow есть много ответов, обсуждающих проблему такого рода. Проверьте ссылки "Связанные" в правой части страницы.