Ruby/Web
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*目次 [#b98c24f2]
#contents
*関連ページ [#a537bd7f]
-[[Ruby]]
-[[Mechanize]]
*URLの操作 [#if9f090e]
**URLからパス部分を削除する [#kd34d53e]
-[[Ruby/Rails 3.1: Given a URL string, remove path - Stac...
#pre{{
uri = URI.join('https://softantenna.com/blog/ddd.html', '...
=> #<URI::HTTPS https://softantenna.com/>
}}
**URLからフラグメントを削除する [#c5ac2c07]
-[[Removing a part of a URL with Ruby - Stack Overflow:ht...
#pre{{
parsed = URI::parse("http://www.domain.extension/folder?s...
parsed.fragment = parsed.query = nil
parsed.to_s
}}
**URIエンコード・デコードする [#ta4642c5]
-[[Ruby On Rails ピチカート街道 - rubyでURLエンコード -:h...
***エンコード [#a7a86457]
#pre{{
require 'uri'
p URI.escape('http://www.ruby-lang.org/ja/man-1.6/?cmd=vi...
=> "http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Ru...
}}
***デコード [#b16c4a7d]
#pre{{
require 'uri'
p URI.unescape('http://www.ruby-lang.org/ja/man-1.6/?cmd=...
=> "http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Ru...
}}
*Tips [#de56f839]
**Net::HTTPでリクエスト [#s70a9ca7]
-以下のような感じで。
#pre{{
require 'net/http'
require 'uri'
require 'kconv'
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
puts "get #{uri.request_uri}"
if uri.scheme == 'https'
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
response, = http.get(uri.request_uri) # request_uri=path ...
body = response.body
puts body
puts Kconv.guess(body)
}}
***uninitialized constant OpenSSL (NameError)が表示される...
-上記コードでエラーが発生する場合、require 'net/http'をre...
-Ruby 2.3.3までは上記コードで動いていたのだが、Ruby 2.3.4...
-http.rbはopensslをautoloadしていて、https.rbはopensslを...
-ここのところの挙動が変更になった模様(両バージョンの間でh...
-変更記録をみても不具合による修正なのかどうかは不明だった。
**OpenURIでリクエスト [#ofb57a33]
-以下のように使用できる
#pre{{
require 'open-uri'
url = ARGV.shift || 'http://www.srcw.net/'
#ブロック内部で読み込む
open(url) do |f|
puts f.read
end
#openの戻り値を生かして読み込む
puts open(url).read
}}
**Digest認証でアクセスする [#ye8ccdee]
-net/httpもopen-uriも対応してないのか(?)
-[[RubyForge: WWW::Mechanize: Project Info:http://rubyfor...
*トラブルシューティング [#c61ef954]
**Responseのencodingが ASCII-8BITになる [#y4fe1016]
-[[Feature #2567: Net::HTTP does not handle encoding corr...
終了行:
*目次 [#b98c24f2]
#contents
*関連ページ [#a537bd7f]
-[[Ruby]]
-[[Mechanize]]
*URLの操作 [#if9f090e]
**URLからパス部分を削除する [#kd34d53e]
-[[Ruby/Rails 3.1: Given a URL string, remove path - Stac...
#pre{{
uri = URI.join('https://softantenna.com/blog/ddd.html', '...
=> #<URI::HTTPS https://softantenna.com/>
}}
**URLからフラグメントを削除する [#c5ac2c07]
-[[Removing a part of a URL with Ruby - Stack Overflow:ht...
#pre{{
parsed = URI::parse("http://www.domain.extension/folder?s...
parsed.fragment = parsed.query = nil
parsed.to_s
}}
**URIエンコード・デコードする [#ta4642c5]
-[[Ruby On Rails ピチカート街道 - rubyでURLエンコード -:h...
***エンコード [#a7a86457]
#pre{{
require 'uri'
p URI.escape('http://www.ruby-lang.org/ja/man-1.6/?cmd=vi...
=> "http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Ru...
}}
***デコード [#b16c4a7d]
#pre{{
require 'uri'
p URI.unescape('http://www.ruby-lang.org/ja/man-1.6/?cmd=...
=> "http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Ru...
}}
*Tips [#de56f839]
**Net::HTTPでリクエスト [#s70a9ca7]
-以下のような感じで。
#pre{{
require 'net/http'
require 'uri'
require 'kconv'
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
puts "get #{uri.request_uri}"
if uri.scheme == 'https'
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
response, = http.get(uri.request_uri) # request_uri=path ...
body = response.body
puts body
puts Kconv.guess(body)
}}
***uninitialized constant OpenSSL (NameError)が表示される...
-上記コードでエラーが発生する場合、require 'net/http'をre...
-Ruby 2.3.3までは上記コードで動いていたのだが、Ruby 2.3.4...
-http.rbはopensslをautoloadしていて、https.rbはopensslを...
-ここのところの挙動が変更になった模様(両バージョンの間でh...
-変更記録をみても不具合による修正なのかどうかは不明だった。
**OpenURIでリクエスト [#ofb57a33]
-以下のように使用できる
#pre{{
require 'open-uri'
url = ARGV.shift || 'http://www.srcw.net/'
#ブロック内部で読み込む
open(url) do |f|
puts f.read
end
#openの戻り値を生かして読み込む
puts open(url).read
}}
**Digest認証でアクセスする [#ye8ccdee]
-net/httpもopen-uriも対応してないのか(?)
-[[RubyForge: WWW::Mechanize: Project Info:http://rubyfor...
*トラブルシューティング [#c61ef954]
**Responseのencodingが ASCII-8BITになる [#y4fe1016]
-[[Feature #2567: Net::HTTP does not handle encoding corr...
ページ名: