Module: Makuri::Spider

Defined in:
lib/makuri/spider.rb

Overview

Include this module in your spider class

Defined Under Namespace

Modules: ClassMethods

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#responseObject

Returns the value of attribute response.



28
29
30
# File 'lib/makuri/spider.rb', line 28

def response
  @response
end

#start_urlsObject

Returns the value of attribute start_urls.



28
29
30
# File 'lib/makuri/spider.rb', line 28

def start_urls
  @start_urls
end

Class Method Details

.included(base) ⇒ Object



10
11
12
# File 'lib/makuri/spider.rb', line 10

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#absolute_url(relative_url) ⇒ Object



57
58
59
# File 'lib/makuri/spider.rb', line 57

def absolute_url(relative_url)
  Addressable::URI.join(browser.current_url, relative_url).to_s
end

#browserObject



36
37
38
# File 'lib/makuri/spider.rb', line 36

def browser
  @browser ||= Makuri::Browser.new
end

#initialize(start_urls) ⇒ Object



30
31
32
33
34
# File 'lib/makuri/spider.rb', line 30

def initialize(start_urls)
  @start_urls = start_urls

  update_response(@start_urls[0])
end

#parseObject

Raises:

  • (NotImplementedError)


40
41
42
# File 'lib/makuri/spider.rb', line 40

def parse
  raise NotImplementedError, "Define #parse method for #{self.class}."
end

#request_to(handler, **params) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/makuri/spider.rb', line 44

def request_to(handler, **params)
  if valid_url? params[:url]
    update_response(params[:url])
    params.delete :url
  end

  if params.empty?
    public_send handler
  else
    public_send handler, params
  end
end