Ruby - ウェブスクレイピング - open-uri

 クラウディア
1. 概要
2. 開いてみるだけ
3. https の問題

1. 概要

 「ruby ウェブスクレイピング」で検索すると最初にかかったのが nokogiri なのですが、URL をオープンするのは open-uri とのことで。  まずはこれを。  本項は以下を参考にさせていただきました。
Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > open-uri ライブラリ」
「Ruby OpenURI の使い方
 open-uri っての、インストールした覚えはないので ruby の基本的なライブラリなのかしら?  わからないことだらけなのだ。

2. 開いてみるだけ

 参考サイトを真似て test.rb というソースに

require 'open-uri'

io = OpenURI.open_uri(ARGV[0])

puts io.read
 というコードを書いてみました

ruby test03.rb http://freebsd.sing.ne.jp/lang/ruby/04/02.html
 を実行すると、正にこのページが出力されました。

3. https の問題

 ちなみに https で取得しようとすると

> ruby test03.rb https://freebsd.sing.ne.jp/lang/ruby/04/02.html
/usr/local/lib/ruby/2.4/net/protocol.rb:44:in `connect_nonblock': SSL_connect returned=1 errno=0 state=error: certificate verify failed (OpenSSL::SSL::SSLError)
        from /usr/local/lib/ruby/2.4/net/protocol.rb:44:in `ssl_socket_connect'
        from /usr/local/lib/ruby/2.4/net/http.rb:948:in `connect'
        from /usr/local/lib/ruby/2.4/net/http.rb:887:in `do_start'
        from /usr/local/lib/ruby/2.4/net/http.rb:876:in `start'
        from /usr/local/lib/ruby/2.4/open-uri.rb:323:in `open_http'
        from /usr/local/lib/ruby/2.4/open-uri.rb:741:in `buffer_open'
        from /usr/local/lib/ruby/2.4/open-uri.rb:212:in `block in open_loop'
        from /usr/local/lib/ruby/2.4/open-uri.rb:210:in `catch'
        from /usr/local/lib/ruby/2.4/open-uri.rb:210:in `open_loop'
        from /usr/local/lib/ruby/2.4/open-uri.rb:151:in `open_uri'
        from test03.rb:3:in `<main>'
 ってなっちゃいます。  python と同じく https がだめ・・・。  ですが

ruby test03.rb "https://www.google.co.jp/?gws_rd=ssl"
 は、正常に動作しました。  Firefox で証明書情報を見ると Google 大先生も「運営者」の欄は「検証され信頼できる運営者情報はありません」になるので。  認証局が「Let's Encrypt」か「Google Trust Services」かの差しかないはずです。  「Let's Encrypt」ってまだ一般には認められていないのかしらん・・・。  これは以降の項目で解決していくことにします。  参考になりそうなサイトのメモを残しておきます。
Windows上のRubyでHTTPSのURLを開こうとするとエラーになる」
「[Ruby] open-uri の HTTPS リクエストで certificate verify failed」
「Windows の Ruby で SSL を使う」
「Windows上のRubyでSSL接続時にcertificate verify failedが出る場合の対処
earthcar(アースカー)