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.
19 20 21 |
# File 'lib/poll_tracker/scraper.rb', line 19 def poll @poll end |
Class Method Details
.all_results ⇒ Object
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_hash ⇒ Object
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_results ⇒ Object
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_index ⇒ Object
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_helper ⇒ Object
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_voters ⇒ Object
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_page ⇒ Object
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_date ⇒ Object
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_names ⇒ Object
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_spread ⇒ Object
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_results ⇒ Object
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 |