Module: Spidy::Definition

Defined in:
lib/spidy/definition.rb

Overview

Class representing a website defined by DSL

Instance Method Summary collapse

Instance Method Details

#call(source = nil, name: :default, &yielder) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/spidy/definition.rb', line 11

def call(source = nil, name: :default, &yielder)
  name = name.presence || :default
  spidy = @namespace[:"#{name}_scraper"]
  fail "undefined spidy [#{name}]" if spidy.nil?

  spidy.call(source, &yielder)
end

#define(name = :default, connector: nil, binder: nil, as: nil, &define_block) ⇒ Object



47
48
49
50
51
52
# File 'lib/spidy/definition.rb', line 47

def define(name = :default, connector: nil, binder: nil, as: nil, &define_block)
  @namespace ||= {}
  connector = Spidy::Connector.get(connector || as, wait_time: @wait_time, user_agent: @user_agent, socks_proxy: @socks_proxy)
  binder = Spidy::Binder.get(self, binder || as)
  @namespace[:"#{name}_scraper"] = define_proc(name, connector, binder, define_block)
end

#each(source = nil, name: :default, &yielder) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/spidy/definition.rb', line 31

def each(source = nil, name: :default, &yielder)
  name = name.presence || :default
  spidy = @namespace[:"#{name}_spider"]
  fail "undefined spidy [#{name}]" if spidy.nil?

  spidy.call(source, &yielder)
end

#namespaceObject



7
8
9
# File 'lib/spidy/definition.rb', line 7

def namespace
  @namespace
end

#socks_proxy(host, port) ⇒ Object



27
28
29
# File 'lib/spidy/definition.rb', line 27

def socks_proxy(host, port)
  @socks_proxy = { host: host, port: port }
end

#spider(name = :default, connector: nil, as: nil, &define_block) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/spidy/definition.rb', line 39

def spider(name = :default, connector: nil, as: nil, &define_block)
  @namespace ||= {}
  connector = Spidy::Connector.get(connector || as, wait_time: @wait_time, user_agent: @user_agent, socks_proxy: @socks_proxy)
  @namespace[:"#{name}_spider"] = proc do |source, &yielder|
    define_block.call(yielder, connector, source)
  end
end

#user_agent(user_agent) ⇒ Object



19
20
21
# File 'lib/spidy/definition.rb', line 19

def user_agent(user_agent)
  @user_agent = user_agent
end

#wait_time(wait_time) ⇒ Object



23
24
25
# File 'lib/spidy/definition.rb', line 23

def wait_time(wait_time)
  @wait_time = wait_time
end