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

前端之家收集整理的这篇文章主要介绍了ruby – 使用open-uri和nokogiri在完全加载之前读取HTML前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用open-uri和nokogiri和 ruby来做一些简单的webcraw.
有一个问题,有时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)

这可能会打开浏览器窗口.

原文链接:https://www.f2er.com/ruby/264521.html

猜你在找的Ruby相关文章