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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:cx20 No.1

回答回数607ベストアンサー獲得回数108

ポイント70pt

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 ライブラリを使う方法(標準で使用可能)が良い気がします。


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

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

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

# 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 でやりたいということでしたら、アレですが・・・。

id:niwatorisan

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

2005/07/12 19:29:47

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません