使用open-uri和nokogiri在完全加载之前读取HTML

我正在使用open-urinokogiri和ruby做一些简单的webcraw。 有一个问题,有时html在完全加载之前被读取。 在这种情况下,我无法获取加载图标和导航栏以外的任何内容。 告诉open-urinokogiri等到页面完全加载的最佳方法是什么?

目前我的脚本看起来像:

 require 'nokogiri' require 'open-uri' url = "https://www.the-page-i-wanna-crawl.com" doc = Nokogiri::HTML(open(url, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE)) puts doc.at_css("h2").text 

你所描述的是不可能的。 open的结果只会在open方法之后传递给HTML ,因为返回了完整的值。

我怀疑页面本身使用AJAX加载其内容,如评论中所建议的那样,在这种情况下,您可以使用Watir使用浏览器获取页面

 require 'nokogiri' require 'watir' browser = Watir::Browser.new browser.goto 'https://www.the-page-i-wanna-crawl.com' doc = Nokogiri::HTML.parse(browser.html) 

这可能会打开一个浏览器窗口。