class WiserWine::GrapeVariety

Attributes

color[RW]
descriptors[RW]
name[RW]
regions[RW]
url[RW]

Public Class Methods

all() click to toggle source
# File lib/wiser_wine/grape_variety.rb, line 21
def self.all
  scrape_grapes
end
new() click to toggle source
# File lib/wiser_wine/grape_variety.rb, line 5
def initialize
  @descriptors = []
  @regions = []
end
scrape_grape_details(grape) click to toggle source
# File lib/wiser_wine/grape_variety.rb, line 49
def self.scrape_grape_details(grape)
  doc = Nokogiri::HTML open(grape.url)
  table = doc.css("table.infobox")
  rows = table.css("tr")
  rows.each do |row|
    if row.css("th").text.downcase.include?("color") || row.css("th").text.downcase.include?("colour")
      grape.color = row.css("td").text
    end
    if row.css("th").text.downcase.include?("region")
        grape.regions = row.css("td").text.split(", ")
    end
  end

end
scrape_grapes() click to toggle source
# File lib/wiser_wine/grape_variety.rb, line 26
def self.scrape_grapes
  scraped_grapes = []
  url = "https://en.wikipedia.org/wiki/Wine_tasting"
  doc = Nokogiri::HTML open(url)
  tables = doc.css("table.multicol table.wikitable")
  tables.each do |table|
    rows = table.css("tr")
    rows.each do |row|
      name = row.css("td:first").text
      descriptors = row.css("td:nth-child(2)").text
      if name != ""
        grape = self.new
        grape.name = name
        grape.descriptors = descriptors.split(", ")
        grape.url =  "https://en.wikipedia.org" << row.css("td:first a").attribute("href").text
        scrape_grape_details(grape)
        scraped_grapes << grape
      end
    end
  end
  scraped_grapes
end

Public Instance Methods

print_details() click to toggle source