Using WWW:Mechanize to download a file to disk without loading it all in memory first

断了今生、忘了曾经 提交于 2019-11-26 11:18:37

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!