Class: PollTracker::Scraper
- Inherits:
-
Object
- Object
- PollTracker::Scraper
- Defined in:
- lib/poll_tracker/scraper.rb
Instance Attribute Summary collapse
-
#poll ⇒ Object
Returns the value of attribute poll.
Class Method Summary collapse
- .all_results ⇒ Object
- .avg_results_hash ⇒ Object
- .clinton_results ⇒ Object
- .poll_names_index ⇒ Object
- .result_helper ⇒ Object
- .scrape_likely_voters ⇒ Object
- .scrape_page ⇒ Object
- .scrape_poll_date ⇒ Object
- .scrape_poll_names ⇒ Object
- .scrape_result_spread ⇒ Object
- .trump_results ⇒ Object
Instance Attribute Details
#poll ⇒ Object
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_results ⇒ Object
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_hash ⇒ Object
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_results ⇒ Object
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_index ⇒ Object
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_helper ⇒ Object
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_voters ⇒ Object
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_page ⇒ Object
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_date ⇒ Object
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_names ⇒ Object
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_spread ⇒ Object
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_results ⇒ Object
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 |