selenium-webdriverでwebページ読み込み待ち
テストではうまく動いてたので気づくの遅れてしまった、これだとページ読み込み中にパース処理が走ってしまう
require "selenium-webdriver" require "nokogiri" driver = Selenium::WebDriver.for :chrome driver.navigate.to url doc = Nokogiri::HTML.parse(driver.page_source) doc.css('div.content').each do |n| ... end
ので、欲しい要素が表示されるまでwait
require "selenium-webdriver" require "nokogiri" driver = Selenium::WebDriver.for :chrome driver.navigate.to url wait = Selenium::WebDriver::Wait.new(:timeout => 3) # second wait.until { driver.find_element(:id => "data").displayed? } doc = Nokogiri::HTML.parse(driver.page_source) doc.css('div.content').each do |n| ... end
いけたー
参考
RubyBindings - selenium - Ruby bindings - Browser automation framework - Google Project Hosting