gpt4 book ai didi

ruby - 有人知道 Ruby Mechanize 的缓存插件吗?

转载 作者:数据小太阳 更新时间:2023-10-29 07:42:13 27 4
gpt4 key购买 nike

我有一个基于 Mechanize 的 Ruby 脚本来抓取网站。我希望通过在本地缓存下载的 HTML 页面来加快速度,使整个“调整输出 -> 运行 -> 调整输出”周期更快。我宁愿不必只为这个脚本在机器上安装外部缓存。理想的解决方案是插入 Mechanize 并透明地缓存获取的页面、图像等。

有人知道可以执行此操作的库吗?还是另一种实现相同结果的方法(脚本第二次运行得更快)?

最佳答案

做这类事情的一个好方法是使用 (AWESOME) VCR gem .

这是您将如何操作的示例:

require 'vcr'
require 'mechanize'

# Setup VCR's configs. The cassette library directory is where
# all of your "recordings" are saved as YAML files.
VCR.configure do |c|
c.cassette_library_dir = 'vcr_cassettes'
c.hook_into :webmock
end

# Make a request...
# The first time you do this it will actually make the call out
# Subsequent calls will read the cassette file instead of hitting the network
VCR.use_cassette('google_homepage') do
a = Mechanize.new
a.get('http://google.com/')
end

如您所见...VCR 在第一次运行时将通信记录为 YAML 文件:

mario$  find tester -mindepth 1 -maxdepth 3
tester/vcr_cassettes
tester/vcr_cassettes/google_homepage.yml

如果你想让 VCR 创建新版本的磁带,只需删除相应的文件即可。

关于ruby - 有人知道 Ruby Mechanize 的缓存插件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5614389/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com