Rubyを使用して、フォローしたいリダイレクトを返すことがあるWebページをスクレイピングしています。それを行う Ruby gem はたくさんありますが、問題があります。
RubyURI.parse
は、技術的に無効であるが次のようなブラウザで動作するいくつかの URI で爆発します。"http://www.google.com/?q=<>"
URI.parse("http://www.google.com/?q=<>") #=> error
require 'addressable/uri'
Addressable::URI.parse("http://www.google.com/?q=<>") #=> works
私が試したすべてのHTTPクライアントライブラリ(HttParty、Faraday、RestClient)は、リダイレクトでそのようなURIに遭遇すると壊れます(これはruby 1.9.3にあります)
残りのクライアント:
require 'rest-client'
RestClient.get("http://bitly.com/ReeuYv") #=> explodes
ファラデー:
require 'faraday'
require 'faraday_middleware'
Faraday.use(FaradayMiddleware::FollowRedirects)
Faraday.get("http://bitly.com/ReeuYv") #=> explodes
httpパーティ:
require 'httparty'
HTTParty.get("http://bitly.com/ReeuYv") # => explodes
オープン URI:
require 'open-uri'
open("http://bitly.com/ReeuYv") # => explodes
これを機能させるにはどうすればよいですか?