Class: TopBeers::Scraper
- Inherits:
-
Object
- Object
- TopBeers::Scraper
- 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_beers ⇒ Object
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 |