Using Python to fetch Republican Primary results in JSON
Using Python to fetch Republican Primary results in JSON
Join the DZone community and get the full member experience.
Join For FreeAccess over 20 APIs and mobile SDKs, up to 250k transactions free with no credit card required
import json import sys import urllib2 from BeautifulSoup import BeautifulSoup import re #Usage python elections.py State Name #Example python elections.py massachusetts state = sys.argv[1] url = ("http://elections.msnbc.msn.com/ns/politics/2012/%s/Republican/primary/" % state) html = BeautifulSoup(urllib2.urlopen(url)).prettify() soup = BeautifulSoup(html) cities = soup.findAll("div", {"class": re.compile(r'\bresultSlice\ countyResults\b')}) results = {} for city in cities: cityName = ''.join((city.find("div", {"class": "state"})).findAll(text=True)).strip() results.setdefault(cityName, {}) table = city.findAll("table", {"class": "results"}) for rows in table: rows = rows.findAll("tr", {"class": re.compile(r'\brep\b')}) for row in rows: try: canidate = ''.join(row.find("td", {"class": "name"}).findAll(text=True)).strip() votes = ''.join(row.find("td", {"class": "votes"}).findAll(text=True)).strip() if votes == "": votes = 0 results.setdefault(cityName, {}).setdefault((canidate.replace("\n","")).replace(" ", " "), {})['votes'] = votes except Exception: continue print json.dumps(results, indent=4)
Enjoy!
#1 for location developers in quality, price and choice, switch to HERE.
Opinions expressed by DZone contributors are their own.
{{ parent.title || parent.header.title}}
{{ parent.tldr }}
{{ parent.linkDescription }}
{{ parent.urlSource.name }}