class TopBeers::Scraper

Public Class Methods

create_beers(beers) click to toggle source
# 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_beers() click to toggle source
# 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) click to toggle source
# 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