導入
SaaS サービスって便利ですよね
便利すぎて次々新しいのが出てきますよね
新しくて、安くて、高機能だったらSaaSサービス移行したくなりますよね
移行する時にデータも移行したいですよね
でもAPIも無いし、エクスポート機能も無いし。。。
そんな時のお話しです
標準的なRubyで作るクローラー
Rubyによるクローラー開発技法とかあるじゃないですか(※ 読んだことない)
それ以外にもWebに転がってる情報は大体
・Nokogiri
・open-uri
・Anemone
とか使ってるのですが、今回はそれを使いません
今回のRubyで作るクローラー
selenium-webdriverを使います
端的に言うと、ブラウザが立ち上がるのでJavaScriptバリバリのページでもクロール出来るんですよね
そう。今回はJavaScriptバリバリのページのクロールです
作成物
source 'https://rubygems.org'
ruby '2.3.1'
gem 'selenium-webdriver'
require 'bundler'
Bundler.require
driver = Selenium::WebDriver.for :firefox
url = 'https://www.yahoo.co.jp'
driver.get url
driver.quit
とかなんとかそんな感じ
苦戦した点
今回、Macで動かしたのですが、最初こちらのブラウザでためそうとしました
rb
driver = Selenium::WebDriver.for :chrome
driver = Selenium::WebDriver.for :safari
しかし、何故かJavaScriptが動かない。
具体的にはクリックすると発生する$.ajax
のイベントが動かない
この問題の解決に時間をかけるより別ブラウザでやった方が納期に間に合う!
って理由でどんどんブラウザを変えていきました
幸い、3つめで$.ajax
が動いたのでよかったです
エンジニアとしてはとっても気持ち悪いですが、
有料SaaSサービスだったので翌月課金が発生する前にクロールが出来たのでよかったです