问题
I\'m using Mechanize to facilitate the downloading of some files. At the moment my script uses the following line to actually download the files...
agent.get(\'http://example.com/foo\').save_as \'a_file_name\'
However this downloads the complete file into memory before dumping it to disk. How do you bypass this behavior, and simply download straight to disk? If I need to use something other than WWW:Mechanize then how would I go about using WWW:Mechanize\'s cookies with it?
回答1:
What you really want is the Mechanize::Download
http://mechanize.rubyforge.org/Mechanize/Download.html
you can use this way:
require 'mechanize'
agent = Mechanize.new
agent.pluggable_parser.default = Mechanize::Download
agent.get('http://example.com/foo').save('a_file_name')
回答2:
Have you looked at Mechanize::FileSaver? It looks like it can do what you require.
Here is an example that saves all the PDF files it encounters:
require 'rubygems'
require 'mechanize'
agent = Mechanize.new
agent.pluggable_parser.pdf = Mechanize::FileSaver
agent.get('http://example.com/foo.pdf')
来源:https://stackoverflow.com/questions/4360043/using-wwwmechanize-to-download-a-file-to-disk-without-loading-it-all-in-memory