• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Rubyでwebページを取得するとき)

Rubyでwebページを取得する方法

このQ&Aのポイント
  • Rubyを使用してwebページを取得する方法について解説します。
  • URLリストを読み込んでwebページを取得し、txtファイルに出力する方法について説明します。
  • また、URLリストに記載されているwebページが見つからなかった場合の処理についても考えます。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.1

ページがないと例外が発生するので、それを拾います。 begin page=URI(url).read page=Kconv.tosjis(page) puts(page) rescue puts "サイトが無い" end のようにしてください。

mot-nghin
質問者

お礼

できました! ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【Ruby】shift-jisのページの置換

    content="text/html; charset=shift-jis"のページを読み込んで、文字列の置換がしたいです。 #!/opt/local/bin/ruby require 'uri' require 'open-uri' url='http://hoge.hoge' open(url,'r:shift_jis'){|io| content = io.read content.gsub!(/ほげ/,'ホゲホゲ) print content } 上記の様に書いてみました。ソースコード自体はUTF-8で記述しました。 実行すると、 `gsub!': incompatible encoding regexp match (UTF-8 regexp with Shift_JIS string) (Encoding::CompatibilityError) となってしまいます。 どうしたらよいのでしょうか? rubyのバージョンは ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin12] です。 以上、よろしくご指導のほど、お願い申し上げます。

    • ベストアンサー
    • Ruby
  • Ruby net/httpについて

    Rubyで#!/ruby/bin/ruby require 'net/http' require 'uri' print "content-type: text/html\r\n\r\n"; begin url = "http://~~~.com/" Net::HTTP.get_print URI.parse(url) rescue => ex print ex.class; print "<hr />"; print ex.message; print "<hr />"; print ex.backtrace; end というようなコードで指定のURLの内容をgetしたいと思っています。 が、とりあえずは上記内容でURL先の内容は取得できるのですが url = "http://www.~~~.com"; という風にwwwをつけるとスクリプトがうごかずURL先の内容が取得できないのです。 原因はなんなのでしょうか? 識者のかたご教授ください。

    • ベストアンサー
    • Ruby
  • RubyによるMechanizeを利用したformの取得について

    kamuycikapです。 <環境> OS : Windows7 Ruby: ActiveScriptRuby     ruby 1.8.7 (2009-06-12 patchlevel 174) [i386-mswin32] <やりたいこと> 手順1.ログインページにアクセスし、ログインIDとパスワードを入力し、ログインボタンをクリックする。 手順2.手順1から遷移したページに設置されている「CSVダウンロード」ボタンをクリックしてCSVファイルを取得する <ソースコード> ---ここから require 'rubygems' require 'mechanize' require 'kconv' agent = WWW::Mechanize.new page = agent.get('https://www.superdelivery.com/common/auth/login') login_form = page.forms.first login_form.fields[0].value = "hogehoge"  # ログインID入力 login_form.fields[1].value = "foobar"   # パスワード入力 redirect_page = agent.submit(login_form) ---ここまで 上記プログラムを実行すると下記のエラーが発生します。 undefined method `fields' for nil:NilClass (NoMethodError) pメソッドを利用してpageを画面に表示してみた処、以下の様子です。 ---ここから #<WWW::Mechanize::Page {url #<URI::HTTPS:0x467dba4 URL:https://www.superdelivery.com/common/auth/login>} {meta} {title "\343\202\242\343\203\221\343\203\254\343\203\253\343\203\273\351\233\221\350\ 262\250\343\202\222\345\215\270\350\262\251\345\243\262-\343\202\271\343\203\274 \343\203\221\343\203\274\343\203\207\343\203\252\343\203\220\343\203\252\343\203 \274"} {iframes} {frames} {links #<WWW::Mechanize::Page::Link "" nil> #<WWW::Mechanize::Page::Link "\347\271\247\357\275\271\347\271\235\357\275\274\347\271\235\344\273\243" "http://www.superdelivery.com/">} {forms}> ---ここまで どうも、formを引っ張ってこれてない模様です。 name属性が設定されていれば問題無いのかもしれないのですが、name属性もありません。 結果として、ログインを行うことすら出来ておりません。 formの内部にあるテキスト領域等にアクセスするためのメソッドはformクラスのFieldにぶら下がっている様子ですので、formが取得できてなければ利用できないのではないかと想像しています。 参考にしたサイトは下記のとおりです。 http://mechanize.rubyforge.org/mechanize/WWW/Mechanize/Form/MultiSelectList.html http://d.hatena.ne.jp/kitamomonga/20090307/ruby_mwchanize_0_9_2_out WIN32OLEを使って、IEを自動操縦する事も検討したのですが、出来るならMechanizeを利用してスマートに処理を実行したいです。 上記のコードは私が利用しているサイトのログインページですが、ログインを利用するページでname属性の無いformを利用しているページであれば何処でも一緒なのではないかと思います。 解決策についてご教示願います。

    • ベストアンサー
    • Ruby
  • rubyのerbを試しているが、ページが空白

    phpに慣れた者です。 rubyでphpと同じように埋め込みのwebプログラミングをしてみようと思い、下記のページを参考に(ほとんど拝借して)作ってみましたが、ページに何も表示されません。 http://ruby.g.hatena.ne.jp/garyo/20071206 レンタルサーバ上にソースファイルは2つです。 [main.cgi] #! /usr/local/bin/ruby -T print "content-type: text/html\n\n" require 'erb' filename = 'tmp.html' erb = ERB.new(File.read(filename)) list = ['AAA', 'BBB', 'CCC'] print erb.result(binding()) [tmp.html] <html> <body> <ul> <% i = 0 %> <% for item in list %> <li>item[<%=i%>] = <%= item %></li> <% i += 1 %> <% end %> </ul> </body> </html> この状態でmain.cgiにブラウザからアクセスしても、ページに何も表示されません。 ソースも0文字です。 原因が何かが見当がつきませんので、アドバイスをお願いします。 なお、パーミッションはmain.cgiが700,tmp.htmlが604。 契約しているレンタルサーバ(ハッスルサーバ)の規約上、main.cgiと拡張子がcgiになっています。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • Ruby

    ## -*- Mode: ruby -*- ###################################################################### =begin = nth機能付き連結リストクラステスト用プログラム =end ###################################################################### require 'MyLinkedList.rb' ; n = 10 ; ##------------------------------ ## 最初のリストを作成。 # 新しくリストのインスタンスを生成 list0 = MyLinkedList::new() ; # 0からnまで順に i に入れて、繰り返す。 (1...n).each{|i| # i の自乗を先頭に挿入 list0.insertToFirst(i * i) ; } ##------------------------------ ## insertToNthのテスト puts("-" * 60) ; puts("insertToNthのテスト") ; puts("before:" + "list0=" + list0.to_s()) ; puts("insert 'foo' into 5th.") ; list0.insertToNth(5,'foo') ; puts("after :" + "list0=" + list0.to_s()) ; puts("insert 'bar' into 0th.") ; list0.insertToNth(0,'bar') ; puts("after :" + "list0=" + list0.to_s()) ; puts("insert 'baz' into 10th.") ; list0.insertToNth(10,'baz') ; puts("after :" + "list0=" + list0.to_s()) ; ##------------------------------ ## deleteFromNthのテスト puts("-" * 60) ; puts("deleteFromNthのテスト") ; puts("before:" + "list0=" + list0.to_s()) ; puts("delete 5th.") ; deletedItem = list0.deleteFromNth(5) ; puts("after :" + "list0=" + list0.to_s()) ; puts("deleted Item=" + deletedItem.to_s()) ; puts("delete 0th.") ; deletedItem = list0.deleteFromNth(0) ; puts("after :" + "list0=" + list0.to_s()) ; puts("deleted Item=" + deletedItem.to_s()) ; puts("delete 10th.") ; deletedItem = list0.deleteFromNth(10) ; puts("after :" + "list0=" + list0.to_s()) ; puts("deleted Item=" + deletedItem.to_s()) ; の意味がわかる方、教えてください

  • Ruby CGI HTTPヘッダ

    Rubyで、 CGIがクライアント(ブラウザ等)から受けたHttpリクエストヘッダとその値を全て取得して表示したいです。(どのようなヘッダが付与されても) 以下を例に教えてください。 #!/usr/bin/ruby require 'cgi' cgi = CGI.new puts "Content-Type:text/html\n\n" puts "<html>\n" puts "<body>\n" #ここにどのように書いたら良いですか? puts "</body></html>\n"

  • rubyに関する質問です。

    rubyに関する質問です。 require 'open-uri' open("uri") do |f| 5.times do print f.gets end end これを実行すると <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>繧ェ繝悶ず繧ァ繧ッ繝域欠蜷代せ繧ッ繝ェ繝励ヨ險?隱・Ruby</title> Complete(0) このように日本語のところだけ文字化けしてしまうのですが、どのようにすれば文字化けがなおるのでしょうか?

    • ベストアンサー
    • Ruby
  • Rubyのrandについて

    Rubyを勉強中の初心者です。 「苺 コーヒー 花 美人 宇宙見物」と書いたファイル(sukinamono.txt)があります。 その中からランダムで1項目取り出して表示するスクリプトをつくりたいと思っています。 getsでsukinamono.txtを読み込んで、randを使うのかなと思ったのですが、スクリプトのうまい書き方がわかりません。 どなたかに教えていただければ幸いです。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • 【Ruby】テキスト置換を1ファイル完結にしたい

    memo.txtの中に含まれている"俺の飯"という文字列を"私のごはん"というふうに置換を行いたいのですが、 現在のやり方だとファイルを開いて1行ずつ読み込んで新しいファイルに文字列を書きだしており 読み込んだ際、置換対象の文字列があった場合に置換して書きだしておりますが このやり方だとどうしても新規ファイルを出力しなければいけません。 これを新規ファイルを作らずにmemo.txtの中身だけを書き換えるようにするには どのような処理にすれば良いのでしょうか? 何卒宜しくお願い致します。 ---- sample.rb require 'rubygems' open("memo.txt"){ |f| open("after_memo.txt","w"){ |o| while line = f.gets line.gsub!("俺の飯", "私のごはん") o.puts line end } } -- memo.txt 俺の飯はリーズナブル! 俺の飯美味しそう!

    • ベストアンサー
    • Ruby
  • ruby テキストファイル書き出しでの文字化け

    ruby&mac&文字の扱い 初心者です。 mac os 10.6.8 HTMLの情報を読み込みテキストファイルに書き出したいのですが、 ターミナル上、putsではきちんと日本語で表示されるのですが、書き出したあとの txtファイルを開くと文字化けしています。 File.open("test.txt","w") do |file| @s_info.each do |data| puts data[:m_sec] file.puts data[:m_sec] end end よろしくお願いします。

    • ベストアンサー
    • Ruby
NET印刷ができない
このQ&Aのポイント
  • DCP-J926Nを使用しているが、ネット印刷ができない。
  • Windowsで無線LANで接続しているが、ネット印刷ができない。
  • 関連するソフトは時刻表PDFを使用しているが、ネット印刷ができない。
回答を見る

専門家に質問してみよう