Rubyによるクローラー開発技法 vol5 ~カピバラさんと出会う~

今回は勉強に入る前に一つ。
 
今まで読み進めてきた
Rubyによるクローラー開発技法」 なんですが、
「本」と書いたり
「書籍」と書いたりと、
統一感がなかったので
わかりやすい呼び名を考える事にしました。

できるだけ短い方が良いので

Rubyによるクローラー開発技法

Rubyクローラー開発本

ルビクロ本

クロ本
 
でいきたいと思います。
 
 
では、本題に戻ります。

今回は、
クロ本通りに進めると(まだchapter2です)、
ログインが必要なサイトをクローリングする方法について
勉強していく事になるのですが、
題材が、
Amazonアソシエイトのウェブサイトにログインして、売上情報を抜き出す」
という内容なんです。
 
 
ここで問題が発生。
Amazonアソシエイトのアカウントを持ってない・・・
 
 
こりゃまずいと思って、
急いでAmazonアソシエイトのアカウントを作って申請したのですが、
 
 
審査が通らない笑

っていうわけなので、
Amazonアソシエイトの売上データ取得は読み飛ばして、
次の
ブラックリストチェック」
というのをやっていきます。
やる事は基本的に同じぽいので。

ブラックリストチェック」というのは、
http://www.blacklistalert.org/
というサイトで、
メールサーバのIPアドレスドメインを入力すると、
そのサーバがスパム等の発信源になっていないかを
確認できるようです。
 
クローラーがやるべき事を手順にすると

  1. サイトを開く
  2. IPアドレスまたはドメインを入力する
  3. checkボタンをクリックする
  4. 表示された結果から発信源になっていないか確認する

以上の4つになります。

これを実現するために、
今回は
 
Capybara(カピバラ)
 
という面白い名前のライブラリを使います。
前回登場したAnemone(アネモネ)は植物の名前でしたが、
今回は動物です!
 
 
前回同様、使い方は結構簡単です。

domain_checkメソッドの中にやりたい事が
すべて書かれています。

  1. サイトを開く
    visit('/')
  2. IPアドレスまたはドメインを入力する
    fill_in("q", :with => target)
  3. checkボタンをクリックする
    click_button("check")
  4. 表示された結果から発信源になっていないか確認する
within(:xpath, "/html/body/center/font/form") do 
  puts "Alert!!" if page.has_content?('LISTED!') 
end

ってな感じです。

この、
visit
fill_in
click_button
といったメソッドについてはCapybaraが提供してくれているので、
これらを使えば簡単に実装できるというわけです。
メソッドは他にも色々あって、
以下に詳しく載っています。
capybara/README.md at master · jnicklas/capybara · GitHub
 
で、これがまた英語なので、
日本語訳されたサイトないかなぁと思って探したら
ありました。
willnet/capybara-readme-ja · GitHub
 
 
 
時間があるときに使えそうなメソッドをまとめてみようと思います。
 
 
ソースコードの説明していない部分は
クロ本に詳しく書かれているので読んでみてください。

クロ本という言葉にも慣れてきました。

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

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