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

标签 ruby nokogiri open-uri

我正在使用 open-urinokogiri 以及 ruby​​ 来进行一些简单的网络爬虫。 有一个问题,有时 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)

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

关于ruby - 使用 open-uri 和 nokogiri 在完全加载之前读取 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13789583/

相关文章:

ruby-on-rails - Nokogiri 解析元词

ruby - 使 :/usr/bin/mkdir: Command not found during `gem install nokogiri` in Ubuntu 20. 04

Ruby open-uri 无法打开 url (m1 mac)

mysql - 将 DataMapper 与 Rails 3 、Ruby 1.9.2 和 MySQL 结合使用 --> [BUG] rb_gc() 上的跨线程冲突

ruby-on-rails - 如何在没有 ActiveRecord 的情况下在 Redis 和 Ohm 上使用表单?

ruby-on-rails - Ruby:IF 语句中的 Nils

ruby-on-rails - 使用 money-rails 自动解析价格

css - Nokogiri 刮文本方法替代?

ruby - 将 latin1 字符串转换为 utf8?

ruby - 在 Ruby 中是否有打开包含下划线的 URL 的解决方法?