class Scraper
Public Instance Methods
get_even_events()
click to toggle source
# File lib/tree_people/scraper.rb, line 17 def get_even_events self.get_page.css(".views-table").css(".even") end
get_event_page(event_url)
click to toggle source
# File lib/tree_people/scraper.rb, line 21 def get_event_page(event_url) doc = Nokogiri::HTML(open("https://www.treepeople.org#{event_url}")) end
get_odd_events()
click to toggle source
# File lib/tree_people/scraper.rb, line 13 def get_odd_events self.get_page.css(".views-table").css(".odd") end
get_page()
click to toggle source
# File lib/tree_people/scraper.rb, line 9 def get_page doc = Nokogiri::HTML(open("https://www.treepeople.org/calendar")) end
make_events()
click to toggle source
# File lib/tree_people/scraper.rb, line 25 def make_events counter = 0 odd_number = 1 self.get_odd_events.each do |event| event = Event.new event.number = odd_number event.month = get_page.css(".views-table").css("caption").text.strip event.date = get_odd_events.css(".views-field-field-date-2").css(".date-display-single")[counter].text.strip event.name = get_odd_events.css(".views-field-title").css("a")[counter].text.strip event.location = get_odd_events.css(".views-field-field-neighborhood")[counter].text.strip event.day = get_odd_events.css(".views-field-field-day-of-week")[counter].text.strip event.start_time = get_odd_events.css(".date-display-start")[counter].text.strip event.end_time = get_odd_events.css(".date-display-end")[counter].text.strip event.category = get_odd_events.css(".views-field-field-event-category")[counter].text.strip event.url = get_odd_events.css(".views-field-title")[counter].css("a").first["href"] counter += 1 odd_number += 2 end ev_counter = 0 even_number = 2 self.get_even_events.each do |event| event = Event.new event.number = even_number event.month = get_page.css(".views-table").css("caption").text.strip event.date = get_even_events.css(".views-field-field-date-2").css(".date-display-single")[ev_counter].text.strip event.name = get_even_events.css(".views-field-title").css("a")[ev_counter].text.strip event.location = get_even_events.css(".views-field-field-neighborhood")[ev_counter].text.strip event.day = get_even_events.css(".views-field-field-day-of-week")[ev_counter].text.strip event.start_time = get_even_events.css(".date-display-start")[ev_counter].text.strip event.end_time = get_even_events.css(".date-display-end")[ev_counter].text.strip event.category = get_even_events.css(".views-field-field-event-category")[ev_counter].text.strip event.url = get_even_events.css(".views-field-title")[ev_counter].css("a").first["href"] ev_counter += 1 even_number += 2 end Event.all.each do |event| if event.start_time.end_with?("am") event.time_of_day = "Morning" elsif event.start_time.start_with?("12:", "1:", "2:", "3:", "4:") event.time_of_day = "Afternoon" else event.time_of_day = "Evening" end details_page = get_event_page(event.url) event.description = details_page.css(".node-event").css("p").text.strip if details_page.css(".node-event").text.strip.end_with?("Event capacity information is updated every hour.") event.spots_open = details_page.css(".node-event").text.split("There are")[-1].strip else event.spots_open = "" end end Event.all.sort_by!{|event| event.number} end