Подтвердить что ты не робот

Использование WWW: Механизировать загрузку файла на диск, не загружая его сначала в память

Я использую Mechanize для облегчения загрузки некоторых файлов. В настоящий момент моя script использует следующую строку для фактической загрузки файлов...

agent.get('http://example.com/foo').save_as 'a_file_name'

Однако он загружает полный файл в память, прежде чем выгружать его на диск. Как вы обходите это поведение и просто загружаете прямо на диск? Если мне нужно использовать что-то другое, кроме WWW: Механизируйте, то как я буду использовать WWW: Механизировать файлы cookie с ним?

4b9b3361

Ответ 1

Что вы действительно хотите, так это 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')

Ответ 2

Вы посмотрели на Mechanize:: FileSaver? Похоже, он может делать то, что вам нужно.

Вот пример, который сохраняет все файлы PDF, с которыми он сталкивается:

require 'rubygems'
require 'mechanize'

agent = Mechanize.new
agent.pluggable_parser.pdf = Mechanize::FileSaver
agent.get('http://example.com/foo.pdf')