Ruby on rails 能够使用Watir从网站上刮取一些文本,但不是所有文本
我可以从网站上抓取一些文字,但我希望能够收集有关优惠券的数据,如标题和价格 我试着从所有的div,li,p,span中看到文本,使用类似 但是没有关于优惠券的信息。我已经尝试过在div中嵌套ps,但是也没有任何结果 控制器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
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?