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