从带有nokogiri的子字符串数组中的某些字符串抓取页面

问题描述 投票:0回答:2

我想在餐厅页面上抓取某些菜式。我创建了一个包含关键字的数组:myarray = {“ Rice”,“ Soup”,“ Chicken”,“ Vegetables”}

[只要在网页中找到这些关键字之一,我的刮板就应该给我完整的菜名。我使用以下代码完成了这项工作:

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


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

例如,这返回:“菜41-鸡肉和米饭蔬菜]

问题在于,上面的代码在找到第一道菜后就停止了。它不会遍历所有包含饭这个词的菜名。其次,我不知道如何让代码检查整个子字符串数组。

ruby-on-rails web-scraping nokogiri watir
2个回答
1
投票

使用.css。这将找到与给定CSS匹配的所有元素,并为您提供集合:

words = html_doc.css(':contains("Rice"):not(:has(:contains("Rice")))').map(&:text)

0
投票

我自己用以下方法解决了问题的第二部分:

word = html_doc.css(":contains('#{keyword}'):not(:has(:contains('#{keyword}')))").map(&:text)
© www.soinside.com 2019 - 2024. All rights reserved.