Как очистить страницу для определенных строк из массива подстрок с помощью Nokogiri - PullRequest
0 голосов
/ 13 января 2020

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

myarray = {"Rice", "Soup", "Chicken", "Vegetables"}

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

html_doc = Nokogiri::HTML.parse(browser.html)


word = html_doc.at(':contains("Rice"):not(:has(:contains("Rice")))').text.strip
puts word

Например, это возвращает: «Di sh 41 - Овощи с курицей и рисом»

Проблема в том, что приведенный выше код останавливается после того, как первый ди sh найден. Он не распространяется на все названия ди sh, содержащие слово «рис». Во-вторых, я не знаю, как позволить коду проверять весь массив подстрок.

Ответы [ 2 ]

2 голосов
/ 13 января 2020

Используйте css. Это найдет все элементы, которые соответствуют данному CSS и даст вам коллекцию:

words = html_doc.css(':contains("Rice"):not(:has(:contains("Rice")))').map(&:text)
0 голосов
/ 13 января 2020

Я сам решил вторую часть вопроса следующим образом:

word = html_doc.css(":contains('#{keyword}'):not(:has(:contains('#{keyword}')))").map(&:text)
...