class MuseumDay::Scraper
Attributes
zipcode[RW]
Public Class Methods
new(zipcode)
click to toggle source
# File lib/museum_day/scraper.rb, line 6 def initialize(zipcode) @zipcode = zipcode end
Public Instance Methods
get_museums_page()
click to toggle source
# File lib/museum_day/scraper.rb, line 10 def get_museums_page Nokogiri::HTML(open("https://www.smithsonianmag.com/museumday/search/?q=&around_zip=#{zipcode}")) end
make_museums()
click to toggle source
# File lib/museum_day/scraper.rb, line 18 def make_museums scrape_museums_index.each do |museum| attribute_hash = { name: museum.css("h4.name").text, city: museum.css("h5.location").text, url: museum.css("a").attribute("href").value, hours: museum.css("div").last.text.strip } MuseumDay::Museum.new(attribute_hash) end end
scrape_details(museum)
click to toggle source
# File lib/museum_day/scraper.rb, line 31 def scrape_details(museum) doc = Nokogiri::HTML(open("https://www.smithsonianmag.com#{museum.url}")) museum.description = doc.css("div.aux-info p").first.text museum.address = doc.css("p.address").text.strip museum.website_url = doc.css("i.fa-external-link + a").attribute("href").value museum.phone_number = doc.at("i.fa-phone").next_sibling.text.strip #Scrape Socials doc.css("div.contact a").collect { |link| link.attribute("href").value }.each do |link| if link.include?("twitter") museum.twitter = link elsif link.include?("facebook") museum.fb = link end end end
scrape_museums_index()
click to toggle source
# File lib/museum_day/scraper.rb, line 14 def scrape_museums_index self.get_museums_page.css("div.museum div.museum-text") end