vote2014nz

Python script to get data on Election 2014 New Zealand Results

TODO


In [280]:
import requests
from bs4 import BeautifulSoup
import dominate

In [281]:
elecreq = ('http://www.electionresults.govt.nz/electionresults_2014/partystatus.html')

In [282]:
elecreq.upper()

In [283]:
elecaz = requests.get(elecreq)

In [284]:
eletextg = elecaz.text

In [285]:
eletextg

In [286]:
soup = BeautifulSoup(eletextg)
print(soup.prettify())


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>
   Election Results -- Overall Status
  </title>
  <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
  <meta content="Catalyst IT gen-web-ovstatus-index.p" name="generator"/>
  <meta content="New Zealand Electoral Commission" name="author"/>
  <link href="public.css" rel="stylesheet" type="text/css"/>
 </head>
 <body>
  <table bgcolor="#FF850C" border="0" cellpadding="0" cellspacing="0" width="100%">
   <tr class="menu">
    <td align="right" class="menu" colspan="2" valign="bottom">
     <a href="index.html">
      HOME
     </a>
     |
     <a href="partystatus.html">
      OVERALL STATUS
     </a>
     |
     <a href="electoratestatus.html">
      ELECTORATE STATUS
     </a>
     |
     <a href="electorateindex.html">
      ELECTORATE DETAILS
     </a>
     |
     <a href="partystatus-early.html">
      ADVANCE VOTES
     </a>
    </td>
    <td align="right" class="menu" valign="bottom" width="7%">
     <img alt="oMan.jpg" height="37" src="img/oMan.jpg" width="59"/>
    </td>
   </tr>
   <tr class="menu">
    <td align="left" class="bannerbar" height="73" rowspan="3">
     <img alt="Elections Logo" src="/img/eclogo.gif" style="width:150px; height:73px; align:left; padding-left:10px; padding-top:1px; padding-bottom:2px;"/>
    </td>
    <td class="bannerbar" height="42">
    </td>
   </tr>
   <tr class="menu">
    <td class="bannerbar" height="10">
    </td>
   </tr>
   <tr class="menu">
    <td class="bannerbar" height="21">
    </td>
   </tr>
  </table>
  <table align="center" border="0" cellpadding="0" cellspacing="0" width="70%">
   <tr>
    <td align="center">
     <h3>
      Election Results -- Overall Status
     </h3>
    </td>
   </tr>
   <tr>
    <td align="center">
     <span class="topmsg">
     </span>
    </td>
   </tr>
   <tr>
    <td height="10">
    </td>
   </tr>
  </table>
  <table align="center" border="1" cellpadding="1" cellspacing="0" class="maintable">
   <tr>
    <td style="padding:5px;">
     <table align="center" border="0" cellpadding="3" cellspacing="0" class="eledata">
      <tr>
       <td class="orhdg" colspan="6" height="10">
       </td>
      </tr>
      <tr>
       <th class="orhdg">
        Results Counted:
       </th>
       <td class="orhdg" colspan="5">
        7,198 of 7,198 (100.0%)
       </td>
      </tr>
      <tr>
       <th class="orhdg">
        Total Votes Counted:
       </th>
       <td class="orhdg" colspan="5">
        2,112,522
       </td>
      </tr>
      <tr>
       <th class="orhdg">
        Special Votes:
       </th>
       <td class="orhdg" colspan="5">
        254,630
       </td>
      </tr>
      <tr>
       <th class="orhdg">
        Less than 6 votes taken in Voting Places:
       </th>
       <td class="orhdg" colspan="5">
        1,385
       </td>
      </tr>
      <tr class="headrowR">
       <th class="headrowL">
        Party
       </th>
       <th class="headrowR">
        Party
        <br/>
        Votes
       </th>
       <th class="headrowR">
        %
        <br/>
        Votes
       </th>
       <th class="headrowR">
        Electorate
        <br/>
        Seats
       </th>
       <th class="headrowR">
        List
        <br/>
        Seats
       </th>
       <th class="headrowR">
        Total
        <br/>
        Seats
       </th>
      </tr>
      <tr class="hhevy">
       <th>
        National Party
       </th>
       <td align="right">
        1,010,464
       </td>
       <td align="right">
        48.06
       </td>
       <td align="right">
        41
       </td>
       <td align="right">
        20
       </td>
       <td align="right">
        61
       </td>
      </tr>
      <tr class="hlite">
       <th>
        Labour Party
       </th>
       <td align="right">
        519,146
       </td>
       <td align="right">
        24.69
       </td>
       <td align="right">
        27
       </td>
       <td align="right">
        5
       </td>
       <td align="right">
        32
       </td>
      </tr>
      <tr class="hhevy">
       <th>
        Green Party
       </th>
       <td align="right">
        210,764
       </td>
       <td align="right">
        10.02
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        13
       </td>
       <td align="right">
        13
       </td>
      </tr>
      <tr class="hlite">
       <th>
        New Zealand First Party
       </th>
       <td align="right">
        186,031
       </td>
       <td align="right">
        8.85
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        11
       </td>
       <td align="right">
        11
       </td>
      </tr>
      <tr class="hhevy">
       <th>
        Māori Party
       </th>
       <td align="right">
        27,074
       </td>
       <td align="right">
        1.29
       </td>
       <td align="right">
        1
       </td>
       <td align="right">
        1
       </td>
       <td align="right">
        2
       </td>
      </tr>
      <tr class="hlite">
       <th>
        ACT New Zealand
       </th>
       <td align="right">
        14,510
       </td>
       <td align="right">
        0.69
       </td>
       <td align="right">
        1
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        1
       </td>
      </tr>
      <tr class="hhevy">
       <th>
        United Future
       </th>
       <td align="right">
        4,533
       </td>
       <td align="right">
        0.22
       </td>
       <td align="right">
        1
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        1
       </td>
      </tr>
      <tr class="hlite">
       <th>
        Conservative
       </th>
       <td align="right">
        86,616
       </td>
       <td align="right">
        4.12
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
      </tr>
      <tr class="hhevy">
       <th>
        Internet MANA
       </th>
       <td align="right">
        26,539
       </td>
       <td align="right">
        1.26
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
      </tr>
      <tr class="hlite">
       <th>
        Aotearoa Legalise Cannabis Party
       </th>
       <td align="right">
        8,539
       </td>
       <td align="right">
        0.41
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
      </tr>
      <tr class="hhevy">
       <th>
        Ban1080
       </th>
       <td align="right">
        4,368
       </td>
       <td align="right">
        0.21
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
      </tr>
      <tr class="hlite">
       <th>
        Democrats for Social Credit
       </th>
       <td align="right">
        1,609
       </td>
       <td align="right">
        0.08
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
      </tr>
      <tr class="hhevy">
       <th>
        The Civilian Party
       </th>
       <td align="right">
        906
       </td>
       <td align="right">
        0.04
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
      </tr>
      <tr class="hlite">
       <th>
        NZ Independent Coalition
       </th>
       <td align="right">
        895
       </td>
       <td align="right">
        0.04
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
      </tr>
      <tr class="hhevy">
       <th>
        Focus New Zealand
       </th>
       <td align="right">
        677
       </td>
       <td align="right">
        0.03
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
       <td align="right">
        0
       </td>
      </tr>
      <tr>
       <td colspan="3">
       </td>
       <td align="right" class="totals">
        71
       </td>
       <td align="right" class="totals">
        50
       </td>
       <td align="right" class="totals">
        121
       </td>
      </tr>
     </table>
    </td>
   </tr>
  </table>
  <table border="0" cellpadding="0" cellspacing="0" width="100%">
   <tr>
    <td class="refrmsg">
     Updated  1:10 am on 21/09/2014
    </td>
   </tr>
   <tr>
    <td align="center" class="bannerbar" height="25" style="vertical-align:middle;text-align:center">
    </td>
   </tr>
   <tr class="menu">
    <td style="text-align:center;padding-top:5px;padding-bottom:5px;">
    </td>
    <td>
    </td>
   </tr>
   <tr>
    <td>
     <p class="copyr">
      Copyright ©2014 New Zealand Electoral Commission, Wellington
      <br/>
      All Rights Reserved
     </p>
     <p class="copyr">
      The results shown are preliminary and may change when the official
      <br/>
      count (including special votes) is completed.
     </p>
    </td>
   </tr>
  </table>
 </body>
</html>


In [287]:
soup.find_all('a')


Out[287]:
[<a href="index.html">HOME</a>,
 <a href="partystatus.html">OVERALL STATUS</a>,
 <a href="electoratestatus.html">ELECTORATE STATUS</a>,
 <a href="electorateindex.html">ELECTORATE DETAILS</a>,
 <a href="partystatus-early.html">ADVANCE VOTES</a>]

In [288]:
mydivs = soup.findAll("tr", { "class" : "hhevy" })

devsa = soup.findAll("td", { "class" : "orhdg"})

In [289]:
votelis = []

In [290]:
for divs in mydivs:
    print divs.findAll('th')
    #votelis.append(divs.findALL('th'))
    print divs.findNext('td')
    #votelis.append(divs.findNext('td'))
    #print divs.findNext('tr')


[<th>National Party</th>]
<td align="right">1,010,464</td>
[<th>Green Party</th>]
<td align="right">210,764</td>
[<th>Māori Party</th>]
<td align="right">27,074</td>
[<th>United Future</th>]
<td align="right">4,533</td>
[<th>Internet MANA</th>]
<td align="right">26,539</td>
[<th>Ban1080</th>]
<td align="right">4,368</td>
[<th>The Civilian Party</th>]
<td align="right">906</td>
[<th>Focus New Zealand</th>]
<td align="right">677</td>

In [291]:
for devz in devsa:
    print(devz)
    votelis.append(devz)


<td class="orhdg" colspan="6" height="10"> </td>
<td class="orhdg" colspan="5">7,198 of 7,198 (100.0%)</td>
<td class="orhdg" colspan="5">2,112,522</td>
<td class="orhdg" colspan="5">  254,630</td>
<td class="orhdg" colspan="5">    1,385</td>

In [292]:
votelis


Out[292]:
[<td class="orhdg" colspan="6" height="10"> </td>,
 <td class="orhdg" colspan="5">7,198 of 7,198 (100.0%)</td>,
 <td class="orhdg" colspan="5">2,112,522</td>,
 <td class="orhdg" colspan="5">  254,630</td>,
 <td class="orhdg" colspan="5">    1,385</td>]

In [293]:
votezcont = []

In [294]:
for votez in votelis:
    print votez.contents
    votezcont.append(votez.contents)


[u'\xa0']
[u'7,198 of 7,198 (100.0%)']
[u'2,112,522']
[u'  254,630']
[u'    1,385']

In [295]:
for numz in votezcont:
    print(numz)


[u'\xa0']
[u'7,198 of 7,198 (100.0%)']
[u'2,112,522']
[u'  254,630']
[u'    1,385']

In [296]:
votaz = votez.getText()

In [297]:
numadd = []

In [298]:
for lets in votaz:
        print lets
        numadd.append(lets)


 
 
 
 
1
,
3
8
5

In [299]:
for numza in numadd:
    print numza


 
 
 
 
1
,
3
8
5

In [300]:
for numz in numadd:
    if int in numz:
        print numz


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-300-4a071c9bca0a> in <module>()
      1 for numz in numadd:
----> 2     if int in numz:
      3         print numz

TypeError: coercing to Unicode: need string or buffer, type found

In [ ]:
soup.find_all('tr')

In [ ]:
X

In [300]:


In [ ]: