Poltergeistとは?
Capybaraさんのドライバーの一つです。
他にもselenium, rack-test(デフォルトのドライバー)などがあります。rack-testは高速ですが、JSに対応してなかったり、seleniumはJSに対応してるがヘッドレスではないため処理が遅かったりと、それぞれ一長一短です。
手順1: Gemのインストール
capybaraとpoltergeistをインストールします。
gem 'capybara'
gem 'poltergeist'
bundle install
手順2: Phantomjsのインストール
各自の環境に応じて行ってください。僕はDockerを使っているので、Dockerfileに設定を書きました。phantomjsのgemもあるんですが、直接入れるのはおすすめしません。
手順3: ドライバーの設定
config/initializers以下にcapybara用のファイルを作成し、poltergeistをドライバーとして登録する。
<例>
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, js_errors: false)
end
Capybara.default_driver = :poltergeist
Capybara.javascript_driver = :poltergeist
Capybara.run_server = false
Capybara.default_selector = :xpath
設定は各自好みに行ってください。詳細は以下リンクに載ってます。
https://github.com/jnicklas/capybara
手順5: 確認
コンソールから確認します。
capybaraのsessionはデフォルトでpageとなっています。(知らないと割と混乱するかも)
そこらへんの設定も各自で行ってください。
pry(main)> page
=> #<Capybara::Session>
pry(main)> url = 'hoge.com'
=> 'hoge.com'
pry(main)> page.visit(url) # ここからは適切なメソッドを使ってhoge.comのあらゆる情報を取得できます
=> {"status"=>"success"}
pry(main)> page.title # タイトルを取得
pry(main)> page.text # コンテンツを取得
pry(main)> Nokogiri.parse(page.body) # こんな感じで鋸使ってパースしたりもできます。
結論
スクレイピングってなんかグレーな機能ですよね笑
各自の責任でやってみてください。capybara/poltegeist優秀ですよ。