最近スクレイピングでURLを取得してきたのですが、絶対パスになっていたり相対パスになっていたり統一感がなくて困ったのでちょっとURLを変更してみようと思います。
相対パスを絶対パスに変える
news_path = "http://hoge.com/news/" entry_path = "/entry/121"
こんなURLがあったとして
absolute_entry_path = "http://hoge.com/entry/121"
がほしいとします。
はじめは
標準ライブラリの uri
を使って
news_uri = URI.parse(news_path)
host = news_uri.host
ablosute_entry_path = host + entry_path
のような感じでいいかと思ったのですが、もっと楽なやり方もありました。
absolute_entry_path = URI.join(news_path, entry_path).to_s
これだけ!楽! 便利なメソッドがあるものですね!
URLのqueryを扱う
news_path = "http://hoge.com/news?date=20160430&site=newssite&hash=hogepoge"
みたいになんか無駄にqueryくっついていてこれどうにかしたいなーと思ったら、どうにかするやつありました。
queryのキーが hash
となるものだけ削除します。
こちらのgemを使います。 sporkmonger/addressable
gem install addressable
require "addressable/uri" parsed_url = Addressable::URI.parse(news_path) query = parsed_url.query_values # queryのhashが出来る。 query.delete("hash") parsed_url.query_values = query # hashを消したqueryを設定する parsed_url.to_s # => "http://hoge.com/news?date=20160430&site=newssite"
いい感じにqueryを変更出来ました!