首页 > 解决方案 > 尝试在 ruby​​ 中使用 open-uri,一些 HTML 内容以“正在加载...”的形式出现

问题描述

我正在尝试创建一个程序来比较网页上的特定事物,然后再进行比较,我目前正在努力获取会改变的信息。但是,如果我检查页面中的元素,会出现会更改的文本,但如果我使用 open-uri 则不会出现,它以“正在加载...”(见图)出现,有没有办法获取所有 HTML 文本?

图片在这里。

这是我当前的代码

contents  = open('https://www.cargurus.com/Cars/l-Used-Mazda-MAZDASPEED6-d841', &:read)

File.open("testing.txt", "w") do |line|
line.puts "\r" + "#{contents}"
end

任何帮助将 Loading... 更改为实际的 HTML 代码都会很棒。

谢谢

标签: rubyopen-uri

解决方案


您的网页包含ajax requestopen-uri仅返回服务器端页面,它不等待 ajax 请求

您可以使用下面的代码等待页面加载

#load the libraries 
require 'watir'
browser = Watir::Browser.new
browser.goto "https://www.cargurus.com/Cars/l-Used-Mazda-MAZDASPEED6-d841"
# giving some time for website to load
sleep 2
puts browser.html

注意: 如果您不想在浏览器中打开 url,则需要chromedriver使用脚本http://chromedriver.chromium.org/downloads然后您可以使用 headless-WebKit


推荐阅读