使用WWW:Mechanize将文件下载到磁盘而不先将其全部加载到内存中

Tho*_*mas 17 ruby mechanize

我正在使用Mechanize来方便下载某些文件.目前我的脚本使用以下行实际下载文件...

agent.get('http://example.com/foo').save_as 'a_file_name'
Run Code Online (Sandbox Code Playgroud)

但是,在将完整文件转储到磁盘之前,会将其下载到内存中.你如何绕过这种行为,直接下载到磁盘?如果我需要使用WWW以外的东西:机械化那么我将如何使用WWW:Mechanize的cookies?

Ren*_*ato 37

你真正想要的是Mechanize :: Download

http://mechanize.rubyforge.org/Mechanize/Download.html

你可以用这种方式:

require 'mechanize'

agent = Mechanize.new
agent.pluggable_parser.default = Mechanize::Download
agent.get('http://example.com/foo').save('a_file_name')
Run Code Online (Sandbox Code Playgroud)

  • 文件保存在哪里? (3认同)

Ger*_*ard 2

您看过Mechanize::FileSaver吗?看起来它可以满足您的要求。

下面是保存遇到的所有 PDF 文件的示例:

require 'rubygems'
require 'mechanize'

agent = Mechanize.new
agent.pluggable_parser.pdf = Mechanize::FileSaver
agent.get('http://example.com/foo.pdf')
Run Code Online (Sandbox Code Playgroud)