def test_get_polling_data_by_name(self): polls = get_polls(candidate="trump") first = polls[0] for p in polls: self.assertIn("trump", p["title"].lower()) td = get_poll_data(first["url"]) self.assertIsNotNone(td)
def test_to_csv(self): csv_file = "output.csv" success = False polls = get_polls(candidate="Biden")[0] data = get_poll_data(polls["url"], csv_output=True) to_csv("output.csv", data) cur_dir = os.getcwd() file_list = os.listdir(cur_dir) if csv_file in file_list: success = True os.remove(csv_file) self.assertTrue(success)
def get_state_polls(): # Get all polls from RCP trump_polls = get_polls(candidate="Trump") # Filter on polls for a specific state state_polls = [] for poll in trump_polls: if (': Trump vs. Biden' in poll['title'] and 'General Election' not in poll['title']): poll_copy = poll poll_copy['state'] = poll_copy['title'].replace( ': Trump vs. Biden', '') state_polls.append(poll_copy) return state_polls
def poll_results(request): for state in battleground_states: polls = get_polls(candidate="Trump", state=state) for poll in polls: title = poll['poll'] result = poll['result'] print(title) print(result) print(state) print(field_values) return render( request, 'blog/polls.html', { 'battleground_states': battleground_states, 'polls': polls, 'field_names': field_names, 'field_values': field_values })
from rcp import get_polls, get_poll_data, to_csv polls = get_polls(candidate="Biden")[0] data = get_poll_data(polls["url"], csv_output=True) to_csv("output.csv", data)
from rcp import get_polls, get_poll_data from pprint import pprint polls = get_polls(q="Trump", p="Fox") for poll in polls: td = get_poll_data(poll['url']) pprint(td)
from rcp import get_polls, get_poll_data from pprint import pprint polls = get_polls(candidate="Trump", pollster="Fox") for poll in polls: td = get_poll_data(poll["url"]) pprint(td)
from rcp import get_polls battleground_states = [ "Wisconsin", "Florida", "Michigan", "Pennsylvania", "North Carolina", "Arizona", ] for state in battleground_states: polls = get_polls(candidate="Trump", state=state) for poll in polls: print(poll)
from rcp import get_polls, get_poll_data, to_csv polls = get_polls(q="Biden")[0] data = get_poll_data(polls['url']) to_csv('output.csv', data)
def get_poll_result(team_name, national=True): team = s.query(Team).filter_by(name=team_name).first() states = [] try: for st in team.get_states(): states.append(us.states.lookup(st)) except Exception as e: pass poll_table = PrettyTable() poll_table.border = False poll_table.field_names = ["Poll", "Biden", "Trump", "Sp"] message = "" if national: td = get_poll_data( "https://www.realclearpolitics.com/epolls/2020/president/us/general_election_trump_vs_biden-6247.html" ) # pa = get_poll_data("https://www.realclearpolitics.com/epolls/2020/president/pa/pennsylvania_trump_vs_biden-6861.html") # ky = get_poll_data("https://www.realclearpolitics.com/epolls/2020/president/ky/kentucky_trump_vs_biden-6915.html") # battle_grounds = "https://www.realclearpolitics.com/json/battleground_script/key_battleground_states_2020_spread_average_oct_23.json" # print(pa) for row in td[0]["data"]: if row['Poll'] == 'RCP Average': message += f'\n\nNational Real Clear Politics Average:\n```' \ f'Date: {row["Date"]}\n' \ f'Biden: {row["Biden (D)"]} ' \ f'Trump: {row["Trump (R)"]}\n' \ f'Spread: {row["Spread"]}' message += "```\n\n" try: for state in states: spread_total = 0 row_count = 0 biden_total = 0 trump_total = 0 spread = 0 message += f"{state} Polls:\n```" for row in get_polls(state=str(state)): poll_name = (row["poll"][:13] + '..') if len(row['poll']) > 13 else row['poll'] if row['result'].split(",")[0].strip().split( " ")[0] == 'Biden': biden = int( row['result'].split(",")[0].strip().split(" ")[1]) trump = int( row['result'].split(",")[1].strip().split(" ")[1]) elif row['result'].split(",")[0].strip().split( " ")[0] == 'Trump': biden = int( row['result'].split(",")[1].strip().split(" ")[1]) trump = int( row['result'].split(",")[0].strip().split(" ")[1]) else: continue biden_total = biden + biden_total trump_total = trump + trump_total if biden > trump: spread = biden - trump biden = f"{biden}+" else: spread = trump - biden trump = f"{trump}+" poll_table.add_row([poll_name, biden, trump, spread]) row_count += 1 if row_count > 1: if biden_total > trump_total: spread_total = round(biden_total / row_count, 3) - round( trump_total / row_count, 3) biden_total = f"{round(biden_total/row_count, 1)}+" trump_total = round(trump_total / row_count, 1) else: spread_total = round(trump_total / row_count, 3) - round( biden_total / row_count, 3) biden_total = round(biden_total / row_count, 1) trump_total = f"{round(trump_total / row_count, 1)}+" poll_table.add_row([ "Total", biden_total, trump_total, round(spread_total, 2) ]) poll_table.align = "l" # poll_table.sortby = '#' # poll_table.reversesort = True message += poll_table.get_string() message += "```\n\n" poll_table.clear_rows() except UnboundLocalError: message += "Set Team Local to get State Polling Data" except ZeroDivisionError: pass # for row in pa[0]["data"]: # if row['Poll'] == 'RCP Average': # message += f'Pennsylvania Real Clear Politics Average:\n' \ # f'Date: {row["Date"]}\n' \ # f'Biden: {row["Biden (D)"]} ' \ # f'Trump: {row["Trump (R)"]} ' \ # f'Spread: {row["Spread"]}' s.close() return message
def test_get_polling_data(self): p = get_polls() polling_data = get_poll_data(p[0]["url"], csv_output=True) self.assertIsNotNone(polling_data) self.assertIn("Poll", polling_data[0]) self.assertIn("Date", polling_data[0])
def test_get_polling_data_by_invalid_poll(self): polls = get_polls(pollster="wow") self.assertEqual(len(polls), 0)
def test_get_polling_data_by_poll(self): polls = get_polls(pollster="cnn") for p in polls: self.assertIn("cnn", p["poll"].lower())
def test_get_polling_data(self): p = get_polls() polling_data = get_poll_data(p[0]['url'], d=True) self.assertIsNotNone(polling_data) self.assertIn('poll', polling_data[0]) self.assertIn('data', polling_data[0])
def test_get_polling_data_by_poll(self): polls = get_polls(p='cnn') for p in polls: self.assertIn('cnn', p['poll'].lower())
def test_get_polling_data_by_name(self): polls = get_polls(q='trump') for p in polls: self.assertIn('trump', p['title'].lower())