Rubyによるクローラー開発技法 vol1 ~正規表現と配列の操作を学ぶ~

本のChapter1から進めます。
Chapter1のタイトルは「10分クローラーの作成」となっています。

いきなり、ワクワクさせるタイトルです。

まずは写経するところから。
本通りに作っていきます。
 
 
 
 
 
 
10分では作れませんでした笑。

というのもRubyの各種メソッドについて
理解していない所が多く、
このメソッド何だろうとか気になってしまって。
分からないところはその都度調べながら進めたので、
実際もっとかかってます。
ただ、本が難しくて時間がかかった訳ではないので
読むのは10分くらいで
スラスラ読めたと思います。

今回学んだ事

String#scan

文字列を正規表現で検索する時に使うメソッド

var = "Ruby"
p var.scan(/Ruby/)
=> ["Ruby"]

p var.scan(%r!Ruby!)
=> ["Ruby"]

こんな感じで書きます。
通常、正規表現//の間に書くと思いますが、
%rと書いて、!!の間に書く事も可能です。
%rを使うと何が良いかというと、
/の場合、正規表現の中に"/"が含まれると"/"を
エスケープする必要があるのですが、
%rを使えばそういった事をしなくてよくなります。
 
特にHTMLを解析するときには"/"がよく出てくると思うので、
%rの書き方の方が便利だと思われます。
ちなみに!は、別の記号にする事も可能で、
%r*Ruby*とか
%r|Ruby|とか
%r{Ruby}とか
色々できます。

Array#zip

配列と配列をくっつけるメソッド

array1 = ["A", "B", "C"]
array2 = ["1", "2", "3"]
p array1.zip(array2)
=> [["A", "1"], ["B", "2"], ["C", "3"]]

こんな感じで、配列の要素(インデックス)が同じもの同士を
まとめてくれます。

Array#map

Array#collectの別名(メソッド名が違うだけで処理は同じ)。
collectメソッドは知ってたんですがmapメソッドは知りませんでした。
何で同じメソッドが2個もあるんですかね?
どっちでも良いと思うんですが、
どっちを使えば良いんでしょうかね。
私みたいな初心者はこういうとこで悩みます笑

 

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例