Как выбрать из элементов заголовка в Ruby - PullRequest
0 голосов
/ 06 октября 2019

Я работаю над сценарием Ruby, который использует селекторы Nokogiri и CSS. Я пытаюсь очистить некоторые данные из HTML, которые выглядят так:

<h2>Title 1</h2>
(Part 1)
<h2>Title 2</h2>
(Part 2)
<h2>Title 3</h2>
(Part 3)

Есть ли способ выбрать из Part 2 только путем указания текста элементов h2, которые представляют начало иконечные точки?

Интересующие данные в Part 2 представляют собой таблицу с элементами tr и td, которые не имеют идентификаторов class или id. В других частях также есть таблицы, в которых я не заинтересован. Что-то вроде

page.css('table tr td')

на всей странице будет выбирать из всех этих других таблиц в дополнение к той, которая мне нужна, и я быхотелось бы избежать этого, если это вообще возможно.

1 Ответ

1 голос
/ 08 октября 2019

Согласно " Есть ли CSS-селектор для элементов, содержащих определенный текст? ", я боюсь, что нет CSS-селектора, работающего с текстом элемента. Как насчет первого извлечения «(часть 2)», а затем с помощью Nokogiri для выбора элементов таблицы внутри него?

text = "" //your string, or content from a file

part2 = text.scan(/<h2>Title 2<\/h2>\s+(.+)?<h2>/ms).first.first

doc = Nokogiri::HTML(part2)

# continue select table elements from doc

(Part 2) не может содержать тег h2, иначе регулярное выражение должно быть другим.

...