Class: MuseumDay::Scraper
- Inherits:
-
Object
- Object
- MuseumDay::Scraper
- Defined in:
- lib/museum_day/scraper.rb
Instance Attribute Summary collapse
-
#zipcode ⇒ Object
Returns the value of attribute zipcode.
Instance Method Summary collapse
- #get_museums_page ⇒ Object
-
#initialize(zipcode) ⇒ Scraper
constructor
A new instance of Scraper.
- #make_museums ⇒ Object
- #scrape_details(museum) ⇒ Object
- #scrape_museums_index ⇒ Object
Constructor Details
#initialize(zipcode) ⇒ Scraper
Returns a new instance of Scraper.
6 7 8 |
# File 'lib/museum_day/scraper.rb', line 6 def initialize(zipcode) @zipcode = zipcode end |
Instance Attribute Details
#zipcode ⇒ Object
Returns the value of attribute zipcode.
4 5 6 |
# File 'lib/museum_day/scraper.rb', line 4 def zipcode @zipcode end |
Instance Method Details
#get_museums_page ⇒ Object
10 11 12 |
# 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 ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 |
# 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) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# 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 ⇒ Object
14 15 16 |
# File 'lib/museum_day/scraper.rb', line 14 def scrape_museums_index self.get_museums_page.css("div.museum div.museum-text") end |