Ruby用のcURLライブラリはありますか?
OpenURI と
open("http://...", :http_basic_authentication=>[user, password])
hTTP認証を必要とするサイト/ページ/リソースへのアクセス。
Curb および Curl :: Multi RubyにcURLバインディングを提供します。
低レベルが好きなら、Curl :: Multiの上に構築される Typhoeus もあります。
Curb-f はCurbのラッパーであり、Curbはlibcurlを使用します。 Curb-fuはCurbに対して何を提供しますか?多くの構文糖衣-しかし、それはしばしばあなたが必要とするものです。
Rest-Client もご覧ください。
HTTPクライアント は、さまざまなクライアントについて決定を下すのに役立つ良いページです。
eat
gemは、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
リクエストをcurl
コマンドとして記述する方法を知っている場合、それをRuby(2.0+)コードに変換できるオンラインツールがあります: curl- to-Ruby
現在、次のオプションを認識しています:-d/--data
、-H/--header
、-I/--head
、-u/--user
、--url
、および-X/--request
。 投稿に対してオープン です。
Mechanize もあります。これは非常に高レベルのWebスクレイピングクライアントで、HTML解析にNokogiriを使用します。
以下は、いくつかのファイルを取得するために作成した小さなプログラムです。
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に移動するのにうんざりしたため、今日一緒にまとめました。
より最近の答えを追加すると、 HTTPClient は別のRuby libcurlを使用し、並列スレッドと多くのcurlグッズをサポートするライブラリです。HTTPClientとTyphoeusを非些細なアプリ。
あまりにも明白なことを述べるために、目盛りはRuby=でシェルコードを実行します。Rubyコードがcurl
:
puts `curl http://www.google.com?q=hello`
または
result = `
curl -X POST https://www.myurl.com/users \
-d "name=pat" \
-d "age=21"
`
puts result