Самый простой способ (IMHO, конечно) - использовать XPath для извлечения элемента <body>
:
html = '<html><head><title>xxx</title></head><body><p>dsfkj</p><p><b>sdff</b> dsfsdf</p></body></html>'
doc = Nokogiri::HTML(html)
body = doc.xpath('//body')
Теперь у вас есть только элемент <body>
(и его дочерние элементы) в body
. Затем, чтобы получить HTML:
body_html = body.to_s
# "<body>\n<p>dsfkj</p>\n<p><b>sdff</b> dsfsdf</p>\n</body>"
Хитрость заключается в том, чтобы извлечь то, что вы хотите, а не пытаться выбросить то, что вы не хотите. Конечный результат тот же, но найти одну вещь, которую вы хотите, проще, чем найти кучу вещей, которые вам не нужны, когда в вашем распоряжении есть язык запросов.