Class: TrailInfo::Scraper
- Inherits:
-
Object
- Object
- TrailInfo::Scraper
- Defined in:
- lib/trail_info/scraper.rb
Class Method Summary collapse
-
.create_trails(state_code) ⇒ Object
Initiates state scrape.
-
.scrape_attributes ⇒ Object
Scrapes trail attributes and collects to trail_array.
-
.scrape_state_guides(state_code) ⇒ Object
Scrapes state site, collects and returns trail information.
-
.scrape_synopsis(state_scrape) ⇒ Object
Scrapes trail synopsis.
-
.scrape_trail_attributes(state_scrape) ⇒ Object
Scrapes trail details.
-
.scrape_trail_length_and_surface(trail_section) ⇒ Object
Scrapes trail length and surface information.
-
.scrape_trail_name(state_scrape) ⇒ Object
Scrapes trail name.
-
.scrape_url(state_scrape) ⇒ Object
Scrapes trail url.
Class Method Details
.create_trails(state_code) ⇒ Object
Initiates state scrape
3 4 5 |
# File 'lib/trail_info/scraper.rb', line 3 def self.create_trails(state_code) #Initiates state scrape scrape_state_guides(state_code) end |
.scrape_attributes ⇒ Object
Scrapes trail attributes and collects to trail_array
13 14 15 16 17 18 19 |
# File 'lib/trail_info/scraper.rb', line 13 def self.scrape_attributes #Scrapes trail attributes and collects to trail_array @trail_array = [] @state_scrape.css(".activityTrail").css(".trailmeta").each do |state_scrape| scrape_trail_attributes(state_scrape) @trail_array << @new_trail end end |
.scrape_state_guides(state_code) ⇒ Object
Scrapes state site, collects and returns trail information
7 8 9 10 11 |
# File 'lib/trail_info/scraper.rb', line 7 def self.scrape_state_guides(state_code) #Scrapes state site, collects and returns trail information @state_scrape = Nokogiri::HTML(open("http://www.traillink.com/stateactivity/#{state_code}-hiking-trails.aspx")) scrape_attributes @trail_array end |
.scrape_synopsis(state_scrape) ⇒ Object
Scrapes trail synopsis
49 50 51 |
# File 'lib/trail_info/scraper.rb', line 49 def self.scrape_synopsis(state_scrape) #Scrapes trail synopsis @state_synopsis = state_scrape.css(".synopsis").text.strip end |
.scrape_trail_attributes(state_scrape) ⇒ Object
Scrapes trail details
21 22 23 24 25 26 27 28 29 30 |
# File 'lib/trail_info/scraper.rb', line 21 def self.scrape_trail_attributes(state_scrape) #Scrapes trail details @new_trail = {} @new_trail["synopsis"] = scrape_synopsis(state_scrape) @new_trail["name"] = scrape_trail_name(state_scrape) @new_trail["url"] = scrape_url(state_scrape) state_scrape.css("p").each do |trail_section| scrape_trail_length_and_surface(trail_section) @new_trail end end |
.scrape_trail_length_and_surface(trail_section) ⇒ Object
Scrapes trail length and surface information
36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/trail_info/scraper.rb', line 36 def self.scrape_trail_length_and_surface(trail_section) #Scrapes trail length and surface information if trail_section.text.include?("miles") ? @new_trail["length"] = [trail_section.text.split[3], trail_section.text.split[4]].join(" ") : @new_trail["length"] = "" end if trail_section.text.include?("Surface:") if trail_section.text.split[7] == nil ? @new_trail["surface"] = trail_section.text.split[6] : @new_trail["surface"] = [trail_section.text.split[6], trail_section.text.split[7].gsub(/,/, "")].join(" ") end else @new_trail["surface"] = "" end @new_trail end |
.scrape_trail_name(state_scrape) ⇒ Object
Scrapes trail name
32 33 34 |
# File 'lib/trail_info/scraper.rb', line 32 def self.scrape_trail_name(state_scrape) #Scrapes trail name state_scrape.css("a").text.split.join(" ") unless state_scrape.css("a").text.split.join(" ") == "" end |
.scrape_url(state_scrape) ⇒ Object
Scrapes trail url
53 54 55 56 |
# File 'lib/trail_info/scraper.rb', line 53 def self.scrape_url(state_scrape) #Scrapes trail url path = state_scrape.css("a").attribute("href").value state_url = "http://www.traillink.com#{path}" end |