質問編集履歴
7
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -79,7 +79,7 @@
|
|
79
79
|
frame_url = frame["src"]
|
80
80
|
frame_page = agent.get(frame_url)
|
81
81
|
"frame_page.body を 目的のファイルに書き込み"
|
82
|
-
path = "/home/
|
82
|
+
path = "/home/ユーザ名/Desktop/file "
|
83
83
|
filename = path
|
84
84
|
save_as(filename)
|
85
85
|
end
|
6
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -149,4 +149,8 @@
|
|
149
149
|
|
150
150
|
#<Mechanize::Page:0x00556b3c27c700>
|
151
151
|
```
|
152
|
-
となります。
|
152
|
+
となります。
|
153
|
+
|
154
|
+
やりたいこと、させたい動作はイメージできますが、やり方等知識が圧倒的に不足しています。
|
155
|
+
知恵をお貸しいただけないでしょうか。
|
156
|
+
よろしくお願いしたします。
|
5
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -98,4 +98,55 @@
|
|
98
98
|
from /home/(ユーザ名)/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/nokogiri-1.6.8.1/lib/nokogiri/xml/node_set.rb:186:in `each'
|
99
99
|
from mechanize.rb:8:in `<main>'
|
100
100
|
```
|
101
|
-
と表示されました。
|
101
|
+
と表示されました。
|
102
|
+
|
103
|
+
また、
|
104
|
+
```ruby
|
105
|
+
require "mechanize"
|
106
|
+
|
107
|
+
agent = Mechanize.new
|
108
|
+
|
109
|
+
agent.user_agent_alias = "Windows Chrome"
|
110
|
+
url = "http://example.com/DataList.php?MstCode=01234567"
|
111
|
+
page = agent.get(url)
|
112
|
+
|
113
|
+
page.root.xpath("//frame").each do |frame|
|
114
|
+
if frame["name"] == "Hyou"
|
115
|
+
frame_url = frame["src"]
|
116
|
+
frame_page = agent.get(frame_url)
|
117
|
+
"frame_page.body を 目的のファイルに書き込み"
|
118
|
+
end
|
119
|
+
|
120
|
+
p frame_page
|
121
|
+
puts frame_page
|
122
|
+
end
|
123
|
+
|
124
|
+
```
|
125
|
+
では、
|
126
|
+
> $ ruby mechanize.rb
|
127
|
+
|
128
|
+
```
|
129
|
+
nil
|
130
|
+
|
131
|
+
#<Mechanize::Page
|
132
|
+
{url
|
133
|
+
#<URI::HTTP http://example.com/DataList.php?MstCode=01234567>}
|
134
|
+
{meta_refresh}
|
135
|
+
{title "ホームページ"}
|
136
|
+
{iframes}
|
137
|
+
{frames}
|
138
|
+
{links}
|
139
|
+
{forms
|
140
|
+
#<Mechanize::Form
|
141
|
+
{name "Form1"}
|
142
|
+
{method "GET"}
|
143
|
+
{action ""}
|
144
|
+
{fields [hidden:0x2ab59e31d368 type: hidden name: Err value: ]}
|
145
|
+
{radiobuttons}
|
146
|
+
{checkboxes}
|
147
|
+
{file_uploads}
|
148
|
+
{buttons}>}>
|
149
|
+
|
150
|
+
#<Mechanize::Page:0x00556b3c27c700>
|
151
|
+
```
|
152
|
+
となります。
|
4
syusei
title
CHANGED
File without changes
|
body
CHANGED
@@ -65,7 +65,7 @@
|
|
65
65
|
> home/(ユーザ名)/Desktop/ファイル
|
66
66
|
|
67
67
|
です
|
68
|
-
|
68
|
+
[Mechanize::File - Seesaa Wiki(ウィキ)](http://seesaawiki.jp/ruby_mechanize/d/Mechanize%3A%3AFile#filename=)を参考にしたのですが、うまくいきませんでした。
|
69
69
|
```
|
70
70
|
require "mechanize"
|
71
71
|
agent = Mechanize.new
|
3
修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
mechanizeでHTMLframeのsrc属性のファイルをダウンロードしたい
|
body
CHANGED
@@ -2,8 +2,10 @@
|
|
2
2
|
あるウェブサイトからファイルを取得したいと考えています。
|
3
3
|
ファイルは一時間ごとに更新されるため、ファイル名も年月日時間で変化します。
|
4
4
|
Rubyでファイルをダウンロードし、指定したディレクトリに保存させたいです。
|
5
|
-
|
5
|
+
> mechanize.rb
|
6
6
|
|
7
|
+
をcronに登録し、時間になると実行して、ダウンロードさせたいと思っています。
|
8
|
+
|
7
9
|
###試したこと
|
8
10
|
```ruby
|
9
11
|
#download.rb
|
@@ -41,9 +43,12 @@
|
|
41
43
|
```
|
42
44
|
と表示されました。
|
43
45
|
保存したいファイルは、
|
44
|
-
|
46
|
+
> DataListHyou.php?MstCode=01234567&Time=yyyymmddhhの形式
|
47
|
+
|
48
|
+
です。
|
45
49
|
保存したい場所は、
|
46
|
-
|
50
|
+
> /home/(ユーザ名)/Desktop/ファイル
|
51
|
+
|
47
52
|
です。
|
48
53
|
|
49
54
|
また、文字化けにも対応したいです。
|
@@ -52,4 +57,45 @@
|
|
52
57
|
|
53
58
|
###補足情報(言語/FW/ツール等のバージョンなど)
|
54
59
|
Ubuntu15.10
|
55
|
-
Ruby2.2.4です。
|
60
|
+
Ruby2.2.4です。
|
61
|
+
|
62
|
+
#追記
|
63
|
+
ファイル名はそのままで保存したいです。
|
64
|
+
保存したい場所は
|
65
|
+
> home/(ユーザ名)/Desktop/ファイル
|
66
|
+
|
67
|
+
です
|
68
|
+
|
69
|
+
```
|
70
|
+
require "mechanize"
|
71
|
+
agent = Mechanize.new
|
72
|
+
agent.user_agent_alias = "Windows Chrome"
|
73
|
+
|
74
|
+
url = "http://soramame.taiki.go.jp/DataList.php?MstCode=34204520"
|
75
|
+
|
76
|
+
page = agent.get(url)
|
77
|
+
page.root.xpath("//frame").each do |frame|
|
78
|
+
if frame["name"] == "Hyou"
|
79
|
+
frame_url = frame["src"]
|
80
|
+
frame_page = agent.get(frame_url)
|
81
|
+
"frame_page.body を 目的のファイルに書き込み"
|
82
|
+
path = "/home/h28-sotuken/Desktop/file "
|
83
|
+
filename = path
|
84
|
+
save_as(filename)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
puts page.body.force_encoding(page.encoding).encode("utf-8")
|
89
|
+
|
90
|
+
```
|
91
|
+
> $ ruby mechanize.rb
|
92
|
+
|
93
|
+
と実行したところ
|
94
|
+
```
|
95
|
+
mechanize.rb.rb:15:in `block in <main>': undefined method `save_as' for main:Object (NoMethodError)
|
96
|
+
from /home/(ユーザ名)/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/nokogiri-1.6.8.1/lib/nokogiri/xml/node_set.rb:187:in `block in each'
|
97
|
+
from /home/(ユーザ名)/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/nokogiri-1.6.8.1/lib/nokogiri/xml/node_set.rb:186:in `upto'
|
98
|
+
from /home/(ユーザ名)/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/nokogiri-1.6.8.1/lib/nokogiri/xml/node_set.rb:186:in `each'
|
99
|
+
from mechanize.rb:8:in `<main>'
|
100
|
+
```
|
101
|
+
と表示されました。
|
2
kousin
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
RubyでHTMLframeのsrcのファイルをダウンロードしたい
|
1
|
+
RubyでHTMLframeのsrc属性のファイルをダウンロードしたい
|
body
CHANGED
File without changes
|
1
修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Rubyで
|
1
|
+
RubyでHTMLframeのsrcのファイルをダウンロードしたい
|
body
CHANGED
File without changes
|