プロが教える店舗&オフィスのセキュリティ対策術

初めて質問します。よろしくお願いいたします。

Rubyのmechanizeを利用し、form内のダウンロードボタンを
クリックして、ファイルをダウンロードする処理を記載したい
のですが、ファイルをローカルマシンに保存する方法がわかりません。
ご存知の方がいらっしゃいましたら、ご教授頂ければと思います。

よろしくお願いいたします。


↓↓↓以下、コードです。↓↓↓

require 'rubygems'
require 'mechanize'
require 'kconv'

#初期設定
fname = 'test.csv'
csv_file = File.open(fname,'w')

# インスタンス生成
agent = WWW::Mechanize.new

# User-Agentの設定
agent.user_agent_alias = 'Windows IE 6'

# ページ取得
site_login = agent.get('https://***.php')

# フォームを探す
search_form = site_login.forms.with.name('login').first

# テキストボックスにデータを入力
search_form['f[EMAIL]'] = 'userid'
search_form['f[PASSWORD]'] = 'password'

# フォームのsubmitボタンを押す
site_top = agent.submit(search_form)

# リンクをたどる
site_top_link = site_top.links.text('ダウンロード')
site_next = agent.get(site_top_link.href)

# フォームを探す
search_next_form = site_next.forms.with.name('myform').first


# データを入力?
search_next_form['from'] = '1'
search_next_form['from_date[from_Year]'] = '2007'
search_next_form['from_date[from_Month]'] = '03'
search_next_form['from_date[from_Day]'] = '02'
search_next_form['to'] = '1'

#↓↓ここをどう書けばよいかで悩んでいます。。。とりあえずこのままでは期待したデータは取れておりません。
## フォームのsubmit(ダウンロード)ボタンを押し、取得したデータをファイルに保存
#csv_file.puts agent.submit(search_next_form)
#↑↑ここをどう書けばよいかで悩んでいます。。。とりあえずこのままでは期待したデータは取れておりません。

csv_file.close

A 回答 (1件)

csv_file.puts agent.submit(search_next_form).body


でどう?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
#レス遅くなってしまい申し訳ありません!

上記のように修正したところ、データを取得できました!
・・・が、この土日にデータダウンロードの仕様に変更が入ったらしく、
GPGにより暗号化されたファイルがダウンロードされるように変更されていました。
このダウンロードしたデータはGPGの複合化に失敗してしまいます。

putsでの出力処理がいけないのかと思い、ご教授頂いた処理を下記のように書き直してみたところ、"300バイトまでは復元し、あとは失敗する"という全く手に負えない状態になってしまいました。

もしファイル出力処理で中止しなければならない点等ご存知でしたら、ご教授いただけないでしょうか?

#修正した出力部分
csv_file.write(agent.submit(search_next_form).body)

お礼日時:2007/03/14 12:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!