2009-05-30 17 views

答えて

30

使用OpenURI

open("http://...", :http_basic_authentication=>[user, password]) 

HTTP認証が必要なサイト/ページ/リソースにアクセスします。

+12

正直なところ、ライブラリがopen-uriを内部的に使用しているのを見ると、私はそのライブラリを使用しません。深く欠陥のあるURIパーサの上に構築された深く欠陥のあるライブラリです。 IRBでの使用には問題ありません。 –

+0

@ Sporkmonger:まあ、それは私たちが持っているものです。Net :: HTTPの未加工のものは何ですか? – apostlion

+7

Net :: HTTPまたはPatronまたはCurb、またはその他の回答に記載されている他のライブラリを使用します。この回答がどのように投票されたか受け入れられたかは、私を超えています。 –

33

低レベルが気に入らない場合は、Typhoeusもあります。これはCurl :: Multiの上に構築されています。

+5

なぜあなたは親指を落としたのだろう? – method

+0

404 link ....;) –

+0

リンクが修正されたことをお知らせします。 – ryenus

5

非常に高レベルなWebスクラップクライアントであるMechanizeもあり、NokogiriをHTML解析に使用しています。あなたはまた、Rest-Client

7

は、順番にlibcurlのを使用しています縁石のラッパーです。 Curb-fuは縁石より何を提供していますか?文法的な砂糖だけがたくさんありますが、それはしばしばあなたが必要とするものです。

+2

Heroku |そのようなアプリはありません – Ramy

9

Curb-fuで顔をしているかもしれません

4

さらに最近の回答を追加すると、HTTPClientはlibcurlを使用する別のRubyライブラリであり、並列スレッドと多くのカールメイドをサポートしています。私は、HTTPClientとTyphoeusを、自明ではないアプリケーションに使用します。

7

HTTP clientsは、さまざまなクライアントに関する意思決定に役立つ優れたページです。

6

eat逸品OpenURIのための "交換" である:

# first do gem install eat 
require 'eat' 
eat('http://yahoo.com')     #=> String 
eat('/home/seamus/foo.txt')    #=> String 
eat('file:///home/seamus/foo.txt')  #=> String 

それはボンネットの下にHTTPClient使用しています。また、いくつかのオプションがあります:

eat('http://yahoo.com', :timeout => 10)     # timeout after 10 seconds 
eat('http://yahoo.com', :limit => 1024)     # only read the first 1024 chars 
eat('https://yahoo.com', :openssl_verify_mode => 'none') # don't bother verifying SSL certificate 
+0

私はこれを動作させることはできません。 'require ':そのようなファイルを読み込むことはできません - eat(LoadError) – Lumbee

4

ここに私はいくつかのファイルを取得するために書いた小さなプログラムです。

base = "http://media.pragprog.com/titles/ruby3/code/samples/tutthreads_" 

for i in 1..50 

    url = "#{ base }#{ i }.rb" 
    file = "tutthreads_#{i}.rb" 

    File.open(file, 'w') do |f| 
    system "curl -o #{f.path} #{url}" 
    end 

end 

私はそれがもう少し雄弁になるかもしれないが、それが目的であることを知っている。見てみな。今日私は、ソースのダウンロードに含まれていない本のコードを取得するために各URLに行くのがうんざりしていたので、今日一緒にそれを一緒に敷き詰めました。

4

あなたはcurlコマンドとしてあなたの要求を作成する方法を知っている場合は、ルビーにそれを回すことができるオンラインツール(2.0+)があるコード:-H/--header-d/--datacurl-to-ruby

現在のところ、それは次のオプションを知っています、-I/--head,-u/--user,--urlおよび-X/--request。それはopen to contributionsです。

関連する問題