Ruby - トラブルシュート - # つきの URI がエラーになる
- 1. # つきの URI がエラーになる
- 2. 解決策
1. # つきの URI がエラーになる
こういうリンク先のとき「https://freebsd.sing.ne.jp/lang/ruby/99/02.html#1.」。
これを下記のようなソースを書いて開こうとすると例外発生となります。
#!/usr/bin/env ruby
=begin
URI をオープンしてみる
=end
require 'open-uri'
begin
uri = URI.encode('https://freebsd.sing.ne.jp/lang/ruby/99/02.html#2.1')
uri = URI.parse(uri)
html = open(uri).read
rescue => error
puts("例外発生[#{error.class}]")
error.backtrace_locations.each do | line |
puts("#{line}")
end
puts("[#{there.class.name}][#{error.message}]")
end
12行目を下記のように書けば、意図通りに動きます。
uri = URI.encode('https://freebsd.sing.ne.jp/lang/ruby/99/02.html')
実際にブラウザでリンクをクリックすれば開くので「#1.」の箇所へと飛ぶので、ブラウザに何か仕掛けがあるのでしょうね。
ブラウザのソースをハックしたことはないのです。
2. 解決策
わたしなりの解決策として、上記のような場合は「https://freebsd.sing.ne.jp/lang/ruby/99/02.html」と「2.1」とに分けて
「https://freebsd.sing.ne.jp/lang/ruby/99/02.html」を開いてドキュメントを取得して、内部の「id」として「2.1」が定義されているかをチェックするようにしました。
|
|