capybaraでクリックして次ページを取得するサンプル

capybaraでクリックして次ページを取得する時に少しハマったので備忘録。

アマゾンのトップページの検索ボックスを入力して、検索を行うサンプル。

require 'capybara/poltergeist'


require 'capybara/poltergeist'


# アマゾンにアクセスするとこまで
Capybara.register_driver :poltergeist do |app|
	Capybara::Poltergeist::Driver.new(app, {:js_errors => false, :timeout => 5000 })
end
session = Capybara::Session.new(:poltergeist)
session.driver.headers = {
	'User-Agent' => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
}
session.visit 'https://www.amazon.co.jp/'

# 検索用テキストBOXを探す
search_input = session.find('#twotabsearchtextbox')

# 検索用テキストBOXにパソコンと入力
search_input.native.send_key('パソコン')

# 検索ボタンを探す
submit = session.find(:xpath, '//*[@id="nav-search"]/form/div[2]/div/input')

# 検索ボタンを押下
submit.trigger('click')

# 検索結果を表示するまでスリープ
sleep(1)

# 検索結果が表示されたページをnokogiriでパース
page = Nokogiri::HTML.parse(session.html)
session.driver.quit

# 検索結果件数を取得
puts page.xpath('//*[@id="s-result-count"]/text()').text

どうですか?
次ページの検索結果件数はうまく取得できましたか?

これでrubyを使ったスクレイピングは一通りできそうですね!

ちなみにwebブラウザでの結果とCapybaraでの検索結果が違う人は『User-Agent』が違うかも。

スポンサーリンク
PR
PR

シェアする

  • このエントリーをはてなブックマークに追加

フォローする