Если вы просто хотите, чтобы родительский элемент каждого h3
элемента
@doc.css('DL>h3').collect(&:parent)
должен сделать трюк.
Однако, похоже, вам могут понадобиться все элементы h3
, которые являются потомками элемента dl
, который является предком элемента h3
. Если я правильно понял это и вашу структуру, вы сможете сделать
@doc.css('dl>h3').collect { |h3| h3.ancestors('dl').css('h3') }
Это дает вам Array
, содержащий Array
с элементами h3
, которые являются потомками dl
элементов в каждом h3
элементе происхождения. Смущенный? Я уверен, что:)
Например, используя ваш пример HTML, результат для Entry 211 h3
будет
@doc.css('dl>h3').collect { |h3| h3.ancestors('dl').css('h3') }[3].collect(&:text)
#=> ["Entry 211", "Entry 21", "Entry 2"]
Это достаточно близко к тому, что вы хотите?