Ruby on rails 能够使用Watir从网站上刮取一些文本,但不是所有文本

Ruby on rails 能够使用Watir从网站上刮取一些文本,但不是所有文本,ruby-on-rails,selenium,watir,Ruby On Rails,Selenium,Watir,我可以从网站上抓取一些文字,但我希望能够收集有关优惠券的数据,如标题和价格 我试着从所有的div,li,p,span中看到文本,使用类似 但是没有关于优惠券的信息。我已经尝试过在div中嵌套ps,但是也没有任何结果 控制器 def save require 'watir' @browser = Watir::Browser.new :chrome, headless: true @browser.goto "https://www.krogerkrazy.com/cou

我可以从网站上抓取一些文字,但我希望能够收集有关优惠券的数据,如标题和价格

我试着从所有的div,li,p,span中看到文本,使用类似 但是没有关于优惠券的信息。我已经尝试过在div中嵌套ps,但是也没有任何结果

控制器

def save
    require 'watir'
    @browser = Watir::Browser.new :chrome, headless: true

    @browser.goto "https://www.krogerkrazy.com/coupons-com-printable-coupons-2/"
    sleep 10
    @divs = @browser.divs
    @spans = @browser.spans
    @body = @browser.body
    @p = @browser.ps
    @li = @browser.lis
end
查看页面

<h1>Kroger Save Page..</h1>
<p> <%= @products.length %> products in Smith DB.</p>
<p> <%= @divs.length %> divs scraped. </p>
<p> <%= @spans.length %> spans products scraped. </p>
<p> <%= @body.text %> </p>
<p> <%= @p.length %> ps scraped.</p>
<p> <%= @li.length %> lis scraped.</p>
<p> <%= @li.first.divs.length %> divs nested in lis scraped.</p>
<p> <%= @li.first.ps.length %> ps nested in lis scraped.</p>
Kroger保存页面。。
史密斯数据库中的产品

潜水艇擦伤了

擦伤的产品

他擦伤了

莉丝擦伤了

嵌套在lis中的div已被删除

在lis中嵌套的ps被刮去


加载页面后,您应该尝试查看它是否存在。为此,您可以在出现()时使用

文档是


有关更多详细信息,请参见此答案:

这些优惠券是否可能在页面加载JavaScript后添加到DOM中?这可以解释为什么你看不到它们。这也是我的想法之一,但如果是这样的话,我也不知道如何访问文本。看起来带优惠券的中心模块/部分位于
(即
。尝试
放置@browser.iframe(id:“ci\u couponclickparentiframe”).text
查看该框架中的文本。仅供参考:难以置信,orde,这很有效。如果您想就此发表文章,我想将其标记为正确答案。@ChrisWilson:很高兴它对您有效。“iframe”这个词这是一个非常常见的问题,这个问题基本上是一个骗局。如果你愿意,你可以删除这个问题,这将有助于保持整洁:)作为参考,watir webdriver不推荐使用,请继续使用最新版本的watir。如果您正在对一个元素执行操作,您不需要显式地编写等待,它将是自动的。如果您没有采取行动,请使用
等待(&:present?
而不是
等待(&:present?