- 締切済み
Rubyのmechanizeを利用したファイルダウンロードの自動化について
初めて質問します。よろしくお願いいたします。 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
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- tthe_mine
- ベストアンサー率46% (19/41)
csv_file.puts agent.submit(search_next_form).body でどう?
お礼
回答ありがとうございます。 #レス遅くなってしまい申し訳ありません! 上記のように修正したところ、データを取得できました! ・・・が、この土日にデータダウンロードの仕様に変更が入ったらしく、 GPGにより暗号化されたファイルがダウンロードされるように変更されていました。 このダウンロードしたデータはGPGの複合化に失敗してしまいます。 putsでの出力処理がいけないのかと思い、ご教授頂いた処理を下記のように書き直してみたところ、"300バイトまでは復元し、あとは失敗する"という全く手に負えない状態になってしまいました。 もしファイル出力処理で中止しなければならない点等ご存知でしたら、ご教授いただけないでしょうか? #修正した出力部分 csv_file.write(agent.submit(search_next_form).body)