11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Capybara/Poltergeistを使ってスクレイピング

Last updated at Posted at 2016-09-18

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優秀ですよ。

11
11
0

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
11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?