以下のサイトを見て、Capybaraというgemを利用したスクレイピングについて勉強しています。
Capybara+PhantomJS+Nokogiriを利用してスクレイピング
そして、以下のソースコードを読んでいましたが、わからない点があります。
ruby
1require 'capybara' 2require 'capybara/dsl' 3require 'capybara/poltergeist' 4 5class Scrape 6 #DSLのスコープを別けないと警告がでます 7 include Capybara::DSL 8 9 def initialize() 10 Capybara.register_driver :poltergeist_debug do |app| 11 Capybara::Poltergeist::Driver.new(app, :inspector => true) 12 end 13 14 Capybara.default_driver = :poltergeist 15 Capybara.javascript_driver = :poltergeist 16 end 17 18 def visit_site 19 page.driver.headers # => {} 20 #ユーザエージェントの設定(必要に応じて) 21 page.driver.headers = { "User-Agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36" } 22 #リファラーの偽装(特に不要) 23 #page.driver.add_headers("Referer" => "http://yahoo.co.jp") 24 page.driver.headers 25 visit('http://www.yahoo.co.jp') 26 #スクリーンショットで保存 27 page.save_screenshot('screenshot.png', :full => true) 28 #within(:xpath, "//*[@id='toipcsfb']/div[1]/ul[1]") do 29 #Nokogirオブジェクトの作成 30 doc = Nokogiri::HTML.parse(page.html) 31 puts doc.title 32 end 33end 34 35scrape = Scrape.new 36scrape.visit_site
以上のソースコードの後半部分でpageという物が突然出てきたので、これはどこから出てきたのか、何なのかわからず止まっています。該当部分は以下のとおりです。
ruby
1 def visit_site 2 page.driver.headers # => {} 3 #ユーザエージェントの設定(必要に応じて) 4 page.driver.headers = { "User-Agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36" } 5 #リファラーの偽装(特に不要) 6 #page.driver.add_headers("Referer" => "http://yahoo.co.jp") 7 page.driver.headers 8 visit('http://www.yahoo.co.jp') 9 #スクリーンショットで保存 10 page.save_screenshot('screenshot.png', :full => true) 11 #within(:xpath, "//*[@id='toipcsfb']/div[1]/ul[1]") do 12 #Nokogirオブジェクトの作成 13 doc = Nokogiri::HTML.parse(page.html) 14 puts doc.title 15 end
自分で調べた所、以下のサイトでこれかな?という物は見つかったのですが、「これはどこから出てきたのか?」という疑問と「これは何なのか?」という疑問は解けないままです。おそらく、CapybaraというgemにDSLと言うものがあり、DSLが持っているメソッドかな、と思っております。
Method: Capybara::DSL#page
0. pageは、どこから出てきたのか?
- pageは何なのか?
この2つの疑問についてご回答頂ければ嬉しいです。どちらか片方だけでも結構です。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/04 06:47