Sha256: fdbf96164af2b9add7af9ee71a77b496c323ff8ef2d6aadb27ad289926246957
Contents?: true
Size: 1.71 KB
Versions: 1
Compression:
Stored size: 1.71 KB
Contents
class WiserWine::GrapeVariety require 'open-uri' require 'openssl' attr_accessor :name, :descriptors, :color, :url, :regions def initialize @descriptors = [] @regions = [] end def print_details puts "#{self.name}\n\n" if self.color puts "Color: #{self.color}\n\n" end puts "Common descriptors for #{self.name} include: #{self.descriptors.join(", ")}\n\n" if self.regions.length > 0 puts "Notable regions include: #{self.regions.join(", ")}\n\n" end end def self.all scrape_grapes end 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 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 end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
wiser-wine-0.1.0 | lib/wiser_wine/grape_variety.rb |