LoginSignup
5

More than 5 years have passed since last update.

導入

SaaS サービスって便利ですよね
便利すぎて次々新しいのが出てきますよね
新しくて、安くて、高機能だったらSaaSサービス移行したくなりますよね
移行する時にデータも移行したいですよね
でもAPIも無いし、エクスポート機能も無いし。。。
そんな時のお話しです

標準的なRubyで作るクローラー

Rubyによるクローラー開発技法とかあるじゃないですか(※ 読んだことない)
それ以外にもWebに転がってる情報は大体

・Nokogiri
・open-uri
・Anemone

とか使ってるのですが、今回はそれを使いません

今回のRubyで作るクローラー

selenium-webdriverを使います
端的に言うと、ブラウザが立ち上がるのでJavaScriptバリバリのページでもクロール出来るんですよね
そう。今回はJavaScriptバリバリのページのクロールです

作成物

Gemfile

source 'https://rubygems.org'
ruby '2.3.1'

gem 'selenium-webdriver'
main.rb
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サービスだったので翌月課金が発生する前にクロールが出来たのでよかったです

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5