我正在使用 open-uri
和 nokogiri
以及 ruby 来进行一些简单的网络爬虫。
有一个问题,有时 html 在完全加载之前就被读取了。在这种情况下,我无法获取加载图标和导航栏以外的任何内容。
告诉 open-uri
或 nokogiri
等待页面完全加载的最佳方法是什么?
目前我的脚本是这样的:
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)
虽然这可能会打开一个浏览器窗口。
关于ruby - 使用 open-uri 和 nokogiri 在完全加载之前读取 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13789583/