人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

RubyでIEのページを保存するソース
を教えてください。
保存場所はデスクトップです


require ’win32ole’

ie = WIN32OLE.new(’InternetExplorer.Application’)
ie.Navigate(”http://www.hatena.ne.jp/”)
ie.Visible = true
while ie.busy
sleep 1
end

●質問者: niwatorisan
●カテゴリ:コンピュータ
✍キーワード:.new application IE InternetExplorer require
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● cx20
●70ポイント

http://www.codeproject.com/shell/iesaveas.asp

URL はダミーです。


Ruby から HTML ファイルを取得する方法ですが、

主な方法として次の3通りの手段があるかと思います。


1. COM の InternetExplorer.Application を使う方法

→ InnerHTML を取得する方法。改行、タグの大文字・小文字、文字コードなどが変換されてしまう。

→ ExecWB を使うという方法もあるが、ファイルを保存するダイアログが表示されてしまう。

→ IWebBorwser2 → IHTMLDocument2 → IPersistFile → IPersistFile::Save()

という方法もあることはあるが、スクリプトからは呼び出し不可(隠しAPI?)

2. COM の MSXML2.XMLHTTP を使う方法

→ 改行、大文字・小文字などは変換されないが、バイナリで保存しないと SJIS に変換されてしまう。

3. Ruby の net/http ライブラリを使う方法

→ オリジナルデータ(生データ)をそのまま取得することが可能。


一通り試してみましたが、Ruby で処理を行うのであれば、

「3.」の net/http ライブラリを使う方法(標準で使用可能)が良い気がします。


以下は、サンプルコードです。

(コードの一部の記号が全角になっていますので、適宜、半角に直してください。)

http://hp.vector.co.jp/authors/VA003334/vb/vbieexcelobject/docum...

###########################################################

# 1. COM の InternetExplorer.Application を使う方法

###########################################################

require ’win32ole’


ie = WIN32OLE.new(’InternetExplorer.Application’)

ie.Navigate(”http://www.hatena.ne.jp/”)

# ie.Visible = true

while ie.busy

sleep 1

end


filename = ENV[”USERPROFILE”] + ”¥¥デスクトップ¥¥” + ”test.html”

File.open( filename, ”w” ) do |file|

ie.Document.All.each {|item|

if item.tagName.upcase == ”HTML”

file.puts item.InnerHTML

end

}

end

###########################################################


http://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaXMLHTTP.html

Web ページをダウンロードする方法〜 MSXML 編〜

###########################################################

# 2. COM の MSXML2.XMLHTTP を使う方法

###########################################################

require ’win32ole’


http = WIN32OLE.new(’MSXML2.XMLHTTP’)

http.Open ”GET”, ”http://www.hatena.ne.jp/”, false

http.Send

filename = ENV[”USERPROFILE”] + ”¥¥デスクトップ¥¥” + ”test.html”

File.open( filename, ”w” ) do |file|

file.puts http.responseText

end

http://www.ruby-lang.org/ja/man/?cmd=view;name=net%2Fhttp.rb

Rubyリファレンスマニュアル - net/http.rb

###########################################################

# 3. Ruby の net/http ライブラリを使う方法

###########################################################

require ’net/http’


Net::HTTP.version_1_2

Net::HTTP.start(’www.hatena.ne.jp’, 80) {|http|

response = http.get(’/index.html’)

filename = ENV[”USERPROFILE”] + ”¥¥デスクトップ¥¥” + ”test.html”

File.open( filename, ”w” ) do |file|

file.puts response.body

end

}

http://oshiete1.goo.ne.jp/kotaeru.php3?q=1374332

[教えて!goo] Webから定期的にファイルを保存

URL は参考情報です。


また、別の方法として wget のようなツールを使うという手もあると思います。

どうしても Ruby でやりたいということでしたら、アレですが・・・。

◎質問者からの返答

1. COM の InternetExplorer.Application を使う方法を採用させてもらいました。とても役に立ちました。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ