Class: TrailInfo::Scraper

Inherits:
Object
  • Object
show all
Defined in:
lib/trail_info/scraper.rb

Class Method Summary collapse

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_attributesObject

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