Rubyでクローラーを作りたい(んだけど分からん) 01
ネット中の単語をランダムはいつ作ってくれるんだろうなー。
このお言葉からじゃあ、どうやればいいのと考えて、取り敢えずURLを収集するクローラーとか言うのがいるんじゃないのと思った。
ちなみにRubyはまだ文法も覚えてない。
とにかく作りながら勉強すりゃいいじゃんと言うことで、検索をかけると良いスライドが見つかった。
本文の解析とかは後回しだ。とにかくaタグのURLを収集できれば良い。
# robots.txtには従いたいが
まず、Webページを読み込むためのOpen-URIとやらの使い方だな。
Rubyは幸いインストールしてある。
ActiveScriptRuby and Other packages
ここの"Ruby-2.1.2-p95 Microsoft Installer Package(2014-5-08 revision 45877改)"だ。
Open-URIで検索をかけるとリファレンスマニュアルが最初に出た。
library open-uri
幸先が良い。特にモジュールやらのインストールはいらないようである。
早速、最初の例文をそのまま書いて実行してみる。
require 'open-uri' open("http://www.ruby-lang.org/") {|f| f.each_line {|line| p line} }
すんなり行くかなと思ったら、エラーが出た。
D:\pg\ruby-test>ruby open-uri-test.rb D:/pg/ruby/lib/ruby/2.1.0/open-uri.rb:223:in `open_loop': redirection forbidden: http://www.ruby-lang.org/ -> https://www.ruby-lang.org/ (RuntimeError) from D:/pg/ruby/lib/ruby/2.1.0/open-uri.rb:149:in `open_uri' from D:/pg/ruby/lib/ruby/2.1.0/open-uri.rb:704:in `open' from D:/pg/ruby/lib/ruby/2.1.0/open-uri.rb:34:in `open' from open-uri-test.rb:3:in `<main>' D:\pg\ruby-test>
redirection forbidden?(・ω・ )
ブラウザで開いてみたら
http://www.ruby-lang.org/はhttps://www.ruby-lang.org/へリダイレクトされた。
Open-URIはリダイレクトに対応していないか、何かオプションでもあるのだろう。
しょうがないので、httpsに書き換えて再挑戦すると、今度はSSLのコネクトで失敗してるぞというエラーが出た。
雲行きが怪しくなってきた。
httpsでの接続は避けて通れないと思うのだが、ここは後回しにして、とにかく一度接続し表示している所が見たい。と言うことで、Yahoo!に行ってみることにした。
URLを書き換えて見事成功である。
しょっぱなからこれか、苦労しそうな気がしてきた。