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.



19
20
21
# File 'lib/poll_tracker/scraper.rb', line 19

def poll
  @poll
end

Class Method Details

.all_resultsObject



76
77
78
79
80
81
82
83
84
85
86
# File 'lib/poll_tracker/scraper.rb', line 76

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



25
26
27
28
29
30
# File 'lib/poll_tracker/scraper.rb', line 25

def self.avg_results_hash
  PollTracker::Score.new({
    clinton: scrape_page.css("ul#chart-choice-select li label.checked span.value").first.text.gsub("%", "").to_f,
    trump: scrape_page.css("ul#chart-choice-select li label.checked span.value").last.text.gsub("%", "").to_f
  }) 
end

.clinton_resultsObject



61
62
63
64
65
66
# File 'lib/poll_tracker/scraper.rb', line 61

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



68
69
70
71
72
73
74
# File 'lib/poll_tracker/scraper.rb', line 68

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

.result_helperObject



32
33
34
# File 'lib/poll_tracker/scraper.rb', line 32

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

.scrape_likely_votersObject



98
99
100
101
102
103
104
105
# File 'lib/poll_tracker/scraper.rb', line 98

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



21
22
23
# File 'lib/poll_tracker/scraper.rb', line 21

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

.scrape_poll_dateObject



88
89
90
91
92
93
94
95
# File 'lib/poll_tracker/scraper.rb', line 88

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



45
46
47
48
49
50
51
52
# File 'lib/poll_tracker/scraper.rb', line 45

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



36
37
38
39
40
41
42
43
# File 'lib/poll_tracker/scraper.rb', line 36

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



54
55
56
57
58
59
# File 'lib/poll_tracker/scraper.rb', line 54

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