Module: Spidy::Definition
- Defined in:
- lib/spidy/definition.rb
Overview
Class representing a website defined by DSL
Instance Method Summary collapse
- #call(source = nil, name: :default, &yielder) ⇒ Object
- #define(name = :default, connector: nil, binder: nil, as: nil, &define_block) ⇒ Object
- #each(source = nil, name: :default, &yielder) ⇒ Object
- #namespace ⇒ Object
- #socks_proxy(host, port) ⇒ Object
- #spider(name = :default, connector: nil, as: nil, &define_block) ⇒ Object
- #user_agent(user_agent) ⇒ Object
- #wait_time(wait_time) ⇒ Object
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 |
#namespace ⇒ Object
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 |