初めて質問します。よろしくお願いいたします。
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件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
csv_file.puts agent.submit(search_next_form).body
でどう?
回答ありがとうございます。
#レス遅くなってしまい申し訳ありません!
上記のように修正したところ、データを取得できました!
・・・が、この土日にデータダウンロードの仕様に変更が入ったらしく、
GPGにより暗号化されたファイルがダウンロードされるように変更されていました。
このダウンロードしたデータはGPGの複合化に失敗してしまいます。
putsでの出力処理がいけないのかと思い、ご教授頂いた処理を下記のように書き直してみたところ、"300バイトまでは復元し、あとは失敗する"という全く手に負えない状態になってしまいました。
もしファイル出力処理で中止しなければならない点等ご存知でしたら、ご教授いただけないでしょうか?
#修正した出力部分
csv_file.write(agent.submit(search_next_form).body)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
さくらインターネットのCGI...
-
wordの数式について 定積分を書...
-
select値をhiddenのvalueに渡し...
-
フリーズする原因
-
ラジオボタンが両方とも選択で...
-
MSPゴシックで、一番幅を取る文字
-
CGI経由でのPDFファイルをダウ...
-
Yomi-Searchのカテゴリを縦並び...
-
cgiからsendmailを送信で文字化け
-
ラジオボタンを選択済みにする...
-
”送信ボタン” ”クリアボタン”...
-
アンケートフォームで前のペー...
-
ディレクトリのファイル数取得
-
WEBページを強制的に横画面で見...
-
チェックボックスで選択した内...
-
チェックボックスの返す値
-
<FORM TYPE="subumit">でデータ...
-
SELECTでgroup byした時の挙動
-
フォームメール確認用ページ
-
別formのhidden項目を自form値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(Perl)ReadParseによるハッシ...
-
Javascriptの変数をCGIに送る方法
-
フォーム入力後の確認画面表示...
-
htmlからcgiに変数を配列にして...
-
perlで自動ログインをしたいが...
-
別サーバーのcgiへバイナリデー...
-
VBで表示したホームページの...
-
リストボックスで選択してさら...
-
入力規則をまとめて定義
-
HDMLでCGIを使おうと思うのです...
-
Rubyのmechanizeを利用したファ...
-
cgi-libを使って変数値渡しをし...
-
htmlのフォームからcgiにデータ...
-
アクセス元URLによって振り分け...
-
フォームに入力した情報をその...
-
SUN BBSの改造方法
-
ラジオボタンが両方とも選択で...
-
「value」に2つの値をセットす...
-
WEBページを強制的に横画面で見...
-
select値をhiddenのvalueに渡し...
おすすめ情報