Anurag Anurag - 28 days ago 6
Python Question

get contents of url in python

import urllib2
response = urllib2.urlopen('http://api.xyz.com')
html = response.read()


IN http://api.xyz.com

{
"responseHeader":{
"status":0,
"QTime":18,
"params":{
"indent":"on",
"q":"",
"wt":"json",}},
"response":{"numFound":7984,"start":0,"maxScore":1.0,"docs":[
{
"id":"21",
"first_name":"anurag"
},
{
"id":"31",
"first_name":"abhishek"
}
]
}


Problem is: this url will return json output. and i want to read that json file but it is showing error: string indices must be integers, not str.

Answer

You need to convert the JSON response to a python structure with the json library (included with Python):

import json

import urllib2
response = urllib2.urlopen('http://api.xyz.com')
data = json.load(response)  # note, no `.read()`, the library handles that

print data['response']
Comments