class Scraper
Public Class Methods
attraction_details(attraction, city)
click to toggle source
# File lib/undercover_tourist_cli/scraper.rb, line 44 def self.attraction_details(attraction, city) city.attractions.select.with_index do |val, index| if val == attraction.name @selected_attraction_url = city.urls[index] attraction.url=(@selected_attraction_url) end end attraction_info = Nokogiri::HTML(open(@selected_attraction_url)) node = attraction_info.css('.reviewpads') if node.empty? attraction.rating=("N/A") else node1 = attraction_info.css('.reviewpads').attribute('class').value.split[1].split('star') attraction.rating=(node1[0].capitalize + " Stars") end node2 = attraction_info.css('.about-attraction').children.css('p').text if node2.empty? attraction.description=("N/A") else attraction.description=(node2) end node3 = attraction_info.css('.daydetail') if node3.nil? attraction.current_crowd_rating=("N/A") else attraction.current_crowd_rating=(node3.first.text) end node4 = attraction_info.css('.fff-attractions').children.css('li').children.css('a') node4.each do |node| attraction.priority_attractions << node.text end if attraction.priority_attractions.empty? attraction.priority_attractions=("N/A") end node5 = attraction_info.css('.calattraction').attribute('data-filter-ids').value if node5.include?('None') attraction.hours=("N/A") elsif node6 = attraction_info.css('calattraction .filterableitem').nil? attraction.hours=("N/A") elsif node6 = attraction_info.css('.calattraction .filterableitem .caltime')[0].nil? attraction.hours=("N/A") else node6 = attraction_info.css('.calattraction .filterableitem .caltime')[0].text.strip if node6 == nil attraction.hours=("N/A") elsif node6.include?('EMH') node7 = attraction_info.css('.calattraction .filterableitem .caltime')[1].text.strip hours = "#{node6} " + "/ #{node7}" attraction.hours=(hours) else hours = "#{node6}" attraction.hours=(hours) end end end
parse_page(city)
click to toggle source
# File lib/undercover_tourist_cli/scraper.rb, line 6 def self.parse_page(city) @page = Nokogiri::HTML(open(@base_path + "/#{city.name.downcase}")) @page end
scrape_city_attractions(city)
click to toggle source
# File lib/undercover_tourist_cli/scraper.rb, line 16 def self.scrape_city_attractions(city) @city_page = Nokogiri::HTML(open(@base_path + "/#{city.name.downcase}" +"/attractions")) node = @city_page.css('.tiletitle') node.each do |node| if node.text != "Attraction" city.attractions << node.text unless city.attractions.include?(node.text) end end city.attractions.each do |object| new = Attractions.new(object) new.city=(city) end scrape_urls(city) end
scrape_city_summary(city)
click to toggle source
# File lib/undercover_tourist_cli/scraper.rb, line 11 def self.scrape_city_summary(city) Scraper.parse_page(city) city.city_summary = @page.css(".cityblurb").children.css("p").text end
scrape_urls(city)
click to toggle source
# File lib/undercover_tourist_cli/scraper.rb, line 31 def self.scrape_urls(city) @attraction_page = Nokogiri::HTML(open(@base_path + "/#{city.name.downcase}" +"/attractions")) node = @attraction_page.css('.tile') @url_list = [] node.each do |node| url = node.children.css('a').attribute('href') if url != nil @url_list << @base_path + url.value unless @url_list.include?(@base_path + url.value) city.urls=(@url_list) end end end