Механизировать: получить все элементы в элементе? - PullRequest
0 голосов
/ 01 апреля 2020

Если я получаю элемент <section>:

client = Mechanize.new
body   = client.get("https://www.linternaute.fr/dictionnaire/fr/definition/perdu/")
section = body.search('.dico_definition')

, и я хочу получить все вхождения только <div class="dico_title_2"> контента в этом <section>

Я пытался:

section.search('.dico_title_2') но он получает <div class="dico_title_2"> всех страниц, и не только в html контенте в <section>.

section.at('.dico_title_2') получает <div class="dico_title_2"> в <section>, но только в первом случае ...

Как я могу получить все вхождения?

Я обнаружил, что может быть проблема:

JavaScript: document.querySelectorAll('section.dico_definition > *') возвращает 7 элементов, но data.search('section.dico_definition') возвращает 4 элемента ...

Может быть проблема в интерпретации html?

Как я могу это сделать в этом случае?

1 Ответ

1 голос
/ 01 апреля 2020

Попробуйте это:

client = Mechanize.new
data   = client.get("https://www.linternaute.fr/dictionnaire/fr/definition/perdu/")
section = data.search('section//.dico_title_2')
section.first # This is the first element

^^^ Здесь будут найдены любые теги с классом .dico_title_2, вложенные в тег раздела.

Примечание: Имя переменной body может быть перепутано с содержимым тега , поэтому я бы вместо этого назвал его как html_content или data.

...