Обновление 2 : хорошо, хорошо, вы удаляете все дочерние элементы с node.children.remove
, включая текстовые узлы, предлагаемое решение может выглядеть следующим образом:
# 1. select all <p> nodes
doc.css('p').
# 2. map children, and flatten
map { |node| node.children }.flatten.
# 3. select text nodes only
select { |node| node.text? }.
# 4. get text and join
map { |node| node.text }.join(' ').strip
Этот пример возвращает"Привет, мой веб-сайт", но обратите внимание, что doc.css('p')
также находит <p>
тегов в <p>
тегах.
Обновление : извините, неправильно прочитал ваш вопрос, вы только хотите "приветмой веб-сайт ", см. решение выше, оригинальный ответ:
Не напрямую с nokogiri, но может потребоваться дезинфицировать камень: https://github.com/rgrove/sanitize/
Sanitize.clean(html, {}) # => " hello my website is click here test "
К вашему сведению, он использует nokogiri внутри страны.