Ответ 1
XPath включает в себя тест text()
node для выбора текстовых узлов, поэтому вы можете сделать:
page.xpath('//p[@class="parent"]/text()')
Использование XPath для выбора классов HTML может стать довольно сложным, если рассматриваемый элемент может принадлежать более чем одному классу, поэтому это может быть не идеальным.
К счастью, Nokogiri добавляет селектор text()
в CSS, поэтому вы можете использовать:
page.css('p.parent > text()')
чтобы получить текстовые узлы, являющиеся прямыми дочерними элементами p.parent
. Это также вернет некоторые узлы, которые являются только whtespace, поэтому вам может потребоваться отфильтровать их.