2009-05-30 5 views

답변

30
사용 OpenURI

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

액세스하는 사이트/페이지/자원.

+12

솔직히 라이브러리가 내부적으로 open-uri를 사용하는 것으로 확인되면 해당 라이브러리를 사용하지 않습니다. 깊숙이 결함이있는 URI 파서를 기반으로 구축 된 심하게 결함이있는 라이브러리입니다. IRB에서의 사용은 괜찮습니다. –

+0

@ Sporkmonger : 글쎄, 그게 우리가 가지고있는거야. 너는 무엇을 제안 하는가? Net :: HTTP? – apostlion

+7

Net :: HTTP 또는 Patron 또는 Curb 또는 다른 대답에서 언급 한 다른 라이브러리를 사용하십시오. 이 답변이 어떻게 투표되거나 수용되었는지는 저를 넘어선 것입니다. –

33

저수준을 좋아하지 않으실 경우 Curl :: Multi 위에 구축 된 Typhoeus도 있습니다.

+5

왜 엄지 손가락을 눌렀을 까? – method

+0

404 link ....;) –

+0

링크가 수정되었음을 알려드립니다. – ryenus

5

매우 높은 수준의 웹 스크래핑 클라이언트 인 Mechanize도 있으며 HTML 구문 분석에 Nokogiri를 사용합니다.

9

Curb-fu 살펴있을 수 있습니다 것은 다시 libcurl에 사용 난간 주위의 래퍼입니다. Curb-fu는 커브를 통해 무엇을 제공합니까? 구문 당 (syntactic sugar)이 너무 많습니다. 그러나 필요한 경우가 많습니다.

4

최근 답변을 추가하면 HTTPClient이 libcurl을 사용하는 다른 Ruby 라이브러리이며 병렬 스레드와 많은 컬링을 지원합니다. HTTPClient와 Typhoeus를 사소한 응용 프로그램에 사용합니다.

7

HTTP clients은 다양한 클라이언트에 대한 결정을 내리는 데 도움이되는 유용한 페이지입니다.

# 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을 사용

6

eat 보석 OpenURI에 대해 "교체"입니다. 또한 몇 가지 옵션이 있습니다 :

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 ': 그러한 파일을로드 할 수 없습니다 - 먹습니다 (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로 이동하여 소스 다운로드에 포함되지 않은 책의 코드를 가져 오는 것이 지겨워서 오늘 같이 자갈을 넣었습니다. -d/--data, -H/--header : 현재 curl-to-ruby

, 그것은 다음과 같은 옵션을 알고 :

4

당신이 curl 명령과 요청을 작성하는 방법을 알고있는 경우는, (2.0) 코드는 루비으로 바꿀 수있는 온라인 도구가 -I/--head, -u/--user, --url-X/--request. open to contributions입니다.