Module: Webcream::Scraper

Defined in:
lib/webcream/scraper.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#pageObject (readonly)

Returns the value of attribute page.



3
4
5
# File 'lib/webcream/scraper.rb', line 3

def page
  @page
end

Instance Method Details

#css(search) ⇒ Object



32
33
34
35
# File 'lib/webcream/scraper.rb', line 32

def css(search)
  html_doc = Nokogiri::HTML(@page.body)
  return html_doc.css(search)
end

#scrape!(page, &block) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/webcream/scraper.rb', line 4

def scrape!(page, &block)
  @page = page

  block_source = block.to_source

  if block_source[block_source.length - 1] == '}' then
    modified_block = block_source.chop!
    modified_block << '; binding }'
  else
    modified_block = block_source.gsub(/\nend/, "\nbinding \nend")
  end

  new_block = eval(modified_block)

  outer_binding = binding
  inner_binding = new_block.call

  inner = eval("local_variables", inner_binding)
  outer = eval("local_variables", outer_binding)

  # create publically accessible instance_variables
  (inner - outer).each do |item|
    singleton_class.class_eval { attr_reader item }
    value = eval("#{item.to_s}", inner_binding)
    instance_eval("@#{item} = value")
  end
end