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



我正在使用 open-uri 和 Ruby nokogiri来做一些简单的网络爬虫。有一个问题是,有时 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)

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

相关内容

  • 没有找到相关文章

最新更新