How to get JSON from webpage into Python script
Get data from the URL and then call json.loads
e.g.
Python3 example:
import urllib.request, json with urllib.request.urlopen("http://maps.googleapis.com/maps/api/geocode/json?address=google") as url: data = json.loads(url.read().decode()) print(data)
Python2 example:
import urllib, jsonurl = "http://maps.googleapis.com/maps/api/geocode/json?address=google"response = urllib.urlopen(url)data = json.loads(response.read())print data
The output would result in something like this:
{"results" : [ { "address_components" : [ { "long_name" : "Charleston and Huff", "short_name" : "Charleston and Huff", "types" : [ "establishment", "point_of_interest" ] }, { "long_name" : "Mountain View", "short_name" : "Mountain View", "types" : [ "locality", "political" ] }, {...
I'll take a guess that you actually want to get data from the URL:
jsonurl = urlopen(url)text = json.loads(jsonurl.read()) # <-- read from it
Or, check out JSON decoder in the requests library.
import requestsr = requests.get('someurl')print r.json() # if response type was set to JSON, then you'll automatically have a JSON response here...
This gets a dictionary in JSON format from a webpage with Python 2.X and Python 3.X:
#!/usr/bin/env pythontry: # For Python 3.0 and later from urllib.request import urlopenexcept ImportError: # Fall back to Python 2's urllib2 from urllib2 import urlopenimport jsondef get_jsonparsed_data(url): """ Receive the content of ``url``, parse it as JSON and return the object. Parameters ---------- url : str Returns ------- dict """ response = urlopen(url) data = response.read().decode("utf-8") return json.loads(data)url = ("http://maps.googleapis.com/maps/api/geocode/json?" "address=googleplex&sensor=false")print(get_jsonparsed_data(url))
See also: Read and write example for JSON