我正在使用Mechanize来方便下载某些文件。目前我的脚本使用以下行实际下载文件......
agent.get('http://example.com/foo').save_as 'a_file_name'
但是,在将整个文件转储到磁盘之前,会将完整文件下载到内存中。你如何绕过这种行为,直接下载到磁盘?如果我需要使用WWW以外的东西:Mechanize那么我将如何使用WWW:Mechanize的cookies?
答案 0 :(得分: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')
答案 1 :(得分:2)
你看过Mechanize::FileSaver了吗?看起来它可以做你需要的。
以下示例保存了遇到的所有PDF文件:
require 'rubygems'
require 'mechanize'
agent = Mechanize.new
agent.pluggable_parser.pdf = Mechanize::FileSaver
agent.get('http://example.com/foo.pdf')