示例#1
0
 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)
示例#2
0
 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
        })
示例#5
0
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)
示例#6
0
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)
示例#7
0
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)
示例#8
0
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)
示例#9
0
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
示例#11
0
 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])
示例#12
0
 def test_get_polling_data_by_invalid_poll(self):
     polls = get_polls(pollster="wow")
     self.assertEqual(len(polls), 0)
示例#13
0
 def test_get_polling_data_by_poll(self):
     polls = get_polls(pollster="cnn")
     for p in polls:
         self.assertIn("cnn", p["poll"].lower())
示例#14
0
文件: tests.py 项目: Jorge1o1/rcp
 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])
示例#15
0
文件: tests.py 项目: Jorge1o1/rcp
 def test_get_polling_data_by_poll(self):
     polls = get_polls(p='cnn')
     for p in polls:
         self.assertIn('cnn', p['poll'].lower())
示例#16
0
文件: tests.py 项目: Jorge1o1/rcp
 def test_get_polling_data_by_name(self):
     polls = get_polls(q='trump')
     for p in polls:
         self.assertIn('trump', p['title'].lower())