我之前曾使用 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/