javascript - 无法使用 Watir 从特定网页抓取数据

标签 javascript html ruby-on-rails ruby watir

我之前曾使用 Watir 成功进行网页抓取,但在抓取此特定网页时遇到问题。

https://kroger.softcoin.com/programs/kroger/digital_coupons/?banner=Smiths&origin=DigitalCoupons

当我在常规浏览器上访问该页面时,我可以看到页面每次都会重新加载两到三次,我认为这就是问题的根源。我尝试过使用

Watir::Wait.until { @browser.div(id: "offer-105653").visible? }

但这不起作用。我已经在其他网页上成功使用上面的代码作为测试,但它似乎不适用于克罗格网站。我不知道如何修复。

def save
    require 'watir'
    require 'phantomjs'

    @browser = Watir::Browser.new:phantomjs
    @browser.goto "https://kroger.softcoin.com/programs/kroger/digital_coupons/?banner=Smiths&origin=DigitalCoupons"
    @browser.li(id: "1768173").wait_until(&:present?).text
    @products = @browser.divs
    @products.each do |x|
        Smith.create(title: x.text) 
    end

end

最佳答案

#visible? 假设该元素首先存在。如果 DOM 中不存在它,它会立即引发异常而不是继续等待,因此在轮询元素时通常不希望使用它。

尝试:

@browser.div(id: "offer-105653").wait_until(&:present?).text`

关于javascript - 无法使用 Watir 从特定网页抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46136636/

相关文章:

ruby-on-rails - 安装 SSL 后在生产模式下显示 Rails 开发风格的错误

ruby-on-rails - 我如何加快这个丑陋的查询?

mysql - rails 4 : Combining two DB variables into a conditional statement for display

javascript - 检测脚本是否为 "already started"

javascript - 为什么 JavaScript 中数组没有以正确的方式存储复合类型?

html - 使用 CSS 在内容旁边定位侧边栏

html - 需要帮助使用 DIV 创建布局

javascript - Bootstrap 可忽略的成功消息使用 ajax 时不会显示更长的时间

javascript - 夏令时的 Telerik RadDatePicker 问题

javascript - 如何在 Javascript 中使用旁边元素的值更改单元格的元素?