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