Использование WWW: Механизация для загрузки файла на диск без предварительной загрузки всего в память - PullRequest
17 голосов
/ 05 декабря 2010

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

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

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

Ответы [ 2 ]

37 голосов
/ 02 февраля 2012

Что вам действительно нужно, так это 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 голосов
/ 06 декабря 2010

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

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

require 'rubygems'
require 'mechanize'

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