1

私は以下のコードを書きました。要件を満たすためにNokogiriを起動するだけで、テストのために実行するとエラーが発生しました。

D:\WIPData\Ruby\Scripts>Nokogiri.rb
C:/Ruby193/lib/ruby/1.9.1/net/http.rb:762:in `initialize': getaddrinfo: No such
host is known.  (SocketError)
        from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:762:in `open'
        from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:762:in `block in connect'
        from C:/Ruby193/lib/ruby/1.9.1/timeout.rb:54:in `timeout'
        from C:/Ruby193/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
        from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:762:in `connect'
        from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:755:in `do_start'
        from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:744:in `start'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:306:in `open_http'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:775:in `buffer_open'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:203:in `block in open_loop'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:201:in `catch'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:201:in `open_loop'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:146:in `open_uri'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:677:in `open'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:33:in `open'
        from D:/WIPData/Ruby/Scripts/Nokogiri.rb:6:in `<main>'

D:\WIPData\Ruby\Scripts>

コード

require 'nokogiri'
require 'open-uri'

# Get a Nokogiri::HTML::Document for the page we’re interested in...

doc = Nokogiri::HTML(open('http://www.google.co.in'))

なぜそうなのか、どうやって修正するのか、アドバイスしてください。

4

1 に答える 1

4

プロキシを設定する必要があるようです。組織のプロキシURL/ポートが何であるか(および認証が必要かどうか)を確認します。ブラウザの設定からこの情報を表示できる場合があります。Rubyコードで使用するには、HTTP_PROXY環境変数を設定する必要があります。

Rubyコードで設定できます。

ENV['HTTP_PROXY'] = 'http://hostname:port'

または認証が必要な場合:

ENV['HTTP_PROXY'] = 'http://username:password@hostname:port'

より永続的な解決策はHTTP_PROXY、システム環境変数を設定することです。

于 2013-01-22T16:20:00.320 に答える