Class: PollTracker::Scraper

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#pollObject

Returns the value of attribute poll.



8
9
10
# File 'lib/poll_tracker/scraper.rb', line 8

def poll
  @poll
end

Class Method Details

.all_resultsObject



73
74
75
76
77
78
79
80
81
82
83
# File 'lib/poll_tracker/scraper.rb', line 73

def self.all_results
  results = []
  result_helper.each do |el|
    results << el.text
    results
  end
  results = results.first(100)
  results = results.delete_if do |num|
    num.to_i < 20
  end  
end

.avg_results_hashObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/poll_tracker/scraper.rb', line 14

def self.avg_results_hash
  results = []
  final_results = {}
  clinton = scrape_page.css("ul#chart-choice-select li label.checked span.value").first.text.gsub("%", "").to_f
  results << clinton
  trump = scrape_page.css("ul#chart-choice-select li label.checked span.value").last.text.gsub("%", "").to_f
  results << trump
  results[0].to_i
  results[1].to_i
  results 
  final_results[:clinton] = results.first
  final_results[:trump] = results.last
  final_results    
end

.clinton_resultsObject



58
59
60
61
62
63
# File 'lib/poll_tracker/scraper.rb', line 58

def self.clinton_results
  clinton = []
  trump = []
  trump, clinton = all_results.each_with_index.partition { |v| v[1].even?}.map{ |v| v.map{ |v| v[0] }}
  clinton
end

.poll_names_indexObject



65
66
67
68
69
70
71
# File 'lib/poll_tracker/scraper.rb', line 65

def self.poll_names_index
  names = []
  scrape_poll_names.each.with_index(1) do |name, i|
     names << "#{i}. " "#{name}"
  end
  names
end

.result_helperObject



29
30
31
# File 'lib/poll_tracker/scraper.rb', line 29

def self.result_helper
  names = scrape_page.css("div.scrollable-poll-table table#poll-table td.choice") 
end

.scrape_likely_votersObject



95
96
97
98
99
100
101
102
# File 'lib/poll_tracker/scraper.rb', line 95

def self.scrape_likely_voters
  vote_array = []
  voters = scrape_page.css("tr.poll-single-subpopulation div.npop")
  voters.children.each do |vote|
    vote_array << vote.text
  end
  vote_array.first(25)
end

.scrape_pageObject



10
11
12
# File 'lib/poll_tracker/scraper.rb', line 10

def self.scrape_page      
  doc = Nokogiri::HTML(open("http://elections.huffingtonpost.com/pollster/2016-general-election-trump-vs-clinton"))  
end

.scrape_poll_dateObject



85
86
87
88
89
90
91
92
# File 'lib/poll_tracker/scraper.rb', line 85

def self.scrape_poll_date
  date_array = []
  date = scrape_page.css("tr.poll-single-subpopulation div.dates")
  date.children.each do |dates|
    date_array << dates.text
  end
  date_array.first(25)
end

.scrape_poll_namesObject



42
43
44
45
46
47
48
49
# File 'lib/poll_tracker/scraper.rb', line 42

def self.scrape_poll_names
  polls = []
  names = scrape_page.css("div.scrollable-poll-table table#poll-table tbody td.poll div.pollster a")
  names.children.collect do |name|
    polls << name.text
  end
  polls.first(25) 
end

.scrape_result_spreadObject



33
34
35
36
37
38
39
40
# File 'lib/poll_tracker/scraper.rb', line 33

def self.scrape_result_spread
  spreads = []
  sp = scrape_page.css("div.scrollable-poll-table table#poll-table td.spread")
  sp.collect do |spread|
    spreads << spread.text
  end
  spreads.first(25)  
end

.trump_resultsObject



51
52
53
54
55
56
# File 'lib/poll_tracker/scraper.rb', line 51

def self.trump_results
  clinton = []
  trump = []
  trump, @clinton = all_results.each_with_index.partition { |v| v[1].even?}.map{ |v| v.map{ |v| v[0] }}
  trump
end