Class: TopBeers::Scraper

Inherits:
Object
  • Object
show all
Defined in:
lib/top-beers/scraper.rb

Constant Summary collapse

@@HOME =
"https://www.beeradvocate.com"

Class Method Summary collapse

Class Method Details

.create_beers(beers) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/top-beers/scraper.rb', line 11

def self.create_beers(beers)
  beers.pop
  i = 0
  beers.each do |beer|
    if i.even?
      new_beer = TopBeers::Beer.new(beer.css("b").text)
      new_beer.url = beer.children[0].attributes['href'].value
      new_beer.brewery = "#{beer.css("#extendedInfo a")[0].text}"
      new_beer.style = beer.css("#extendedInfo a")[1].text
      if beer.css("#extendedInfo").children[3] != nil
        new_beer.abv = beer.css("#extendedInfo").children[3].text[3, 10].chomp(" ABV")
      end
    end
    i += 1
  end
end

.scrape_beersObject



4
5
6
7
8
9
# File 'lib/top-beers/scraper.rb', line 4

def self.scrape_beers
  doc = Nokogiri::HTML(open("https://www.beeradvocate.com/lists/top/"))
  beers = doc.search(".hr_bottom_light[@align='left']")
  self.create_beers(beers)
  beers
end

.scrape_details(beer) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/top-beers/scraper.rb', line 28

def self.scrape_details(beer)
  doc = Nokogiri::HTML(open("https://www.beeradvocate.com"+beer.url))
  beer.ba_score = doc.search(".ba-score").text

    beer.brewery.location_1 = "#{doc.search('.break')[1].children[15].text}"
    if beer.brewery.location_1 == "Belgium"
      beer.availability = doc.search(".break")[1].children[35].text.strip
      beer.brewery.website = "#{doc.search(".break")[1].children[17].text}"
      beer.description = doc.search(".break")[1].children[42].text.gsub(/\n\t\t/, '')
    else
      beer.availability = doc.search(".break")[1].children[37].text.strip
      beer.description = doc.search(".break")[1].children[44].text.gsub(/\n\t\t/, '')
      beer.brewery.location_2 = "#{doc.search(".break")[1].children[17].text}"
      beer.brewery.website = "#{doc.search('.break')[1].children[19].text}"
    end
end