山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

Mechanize Tips

Mechanizeでサイトからデータを

ダウンロードするプログラムを作りました。

いくつか引っかかったところがあるので

対応方法を紹介したいと思います。

ruby 2.0.0p481

mechanize (2.7.3)

SSL

httpsのリクエストはデフォルトだと

証明書エラーになりました。

とりあえず動かすには証明書のチェックを

無視する設定があります。

agent = Mechanize.new
agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
page = agent.get('https://.....')

正しくは証明書をインストールするほうが

よいですがやり方は未検証です。


・ファイル保存

以前のエントリで

File.write('ファイル名', page.body)

というやり方を紹介しましたが、これで

zipファイルを保存したところ解凍できません

でした。

バイナリエディタで手動でダウンロードした

正規のファイルと比較したところ、なんと

改行コード(と同じバイト列)が自動的に

変換されてしまっていました。

file = agent.submit(form)
file.save!('ファイル名')

としたところちゃんと保存できました。


・zip解凍

rubyzip (1.1.4)

zip解凍もいくつかライブラリがあったり

バージョンによって結構変わっているので

今回うまくいった方法を紹介しておきます。

シンプルで簡単です。

Zip::File.open('ファイル名') do |zip|
zip.each do |entry|
entry.extract(entry.to_s)
end
end