Class: Arbitrage::Scraper

Inherits:
Object
  • Object
show all
Defined in:
lib/arbitrage/Scraper.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#buy_optionsObject

Returns the value of attribute buy_options.



2
3
4
# File 'lib/arbitrage/Scraper.rb', line 2

def buy_options
  @buy_options
end

#productObject

Returns the value of attribute product.



2
3
4
# File 'lib/arbitrage/Scraper.rb', line 2

def product
  @product
end

#urlObject

Returns the value of attribute url.



2
3
4
# File 'lib/arbitrage/Scraper.rb', line 2

def url
  @url
end

Instance Method Details

#buy_options_menu(doc) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/arbitrage/Scraper.rb', line 22

def buy_options_menu(doc)
  self.buy_options = {}
  doc.css('.row').each_with_index do |row, i|
    if i < 11
      self.buy_options["#{i+1}".to_s] = {
        name: (row.css('.hdrlnk').text),
        price: (row.css('.l2 .price').text),
        url:"#{self.url}mod/#{(row.css('.pl a')[0]['data-id'])}.html"
      }
    end
  end
end

#craigslist_queryObject



41
42
43
44
45
46
47
48
49
# File 'lib/arbitrage/Scraper.rb', line 41

def craigslist_query
  query = self.product.name.split(" ")
  if query.size > 1
    query= query.join("%20")
  else
    query= query.join
  end
  self.product.query = query
end

#craigslist_search_url(url, query) ⇒ Object



51
52
53
# File 'lib/arbitrage/Scraper.rb', line 51

def craigslist_search_url(url,query)
  "#{url}search/sss?query=#{query}&sort=rel"
end

#create_index_urlObject



4
5
6
7
8
9
10
11
12
13
# File 'lib/arbitrage/Scraper.rb', line 4

def create_index_url
  csv_data = File.read('rsc/clzips.csv')
  rows = csv_data.split("\n")
  people = rows.collect do |row|
    data = row.split(",")
    if data[1] == self.product.zipcode
      self.url=data[0]
    end
  end
end

#create_product_listObject



15
16
17
18
19
20
# File 'lib/arbitrage/Scraper.rb', line 15

def create_product_list
  html = open(craigslist_search_url(self.url,craigslist_query))
  doc = Nokogiri::HTML(html)
  buy_options_menu(doc)
  display_buy_options
end

#display_buy_optionsObject



35
36
37
38
39
# File 'lib/arbitrage/Scraper.rb', line 35

def display_buy_options
    self.buy_options.each do |key, value|
      puts "#{key}.#{value[:name]} for #{value[:price]}"
    end
end