Reputation: 168
I'm trying to extract json data from a multiple URLs withe code below but it throws an error as mentioned on the title. However, when using only one URL the code works.
Any help is appreciated.
import urllib, json, time, csv
arr_ids = ['611', '1564', '1565', '1561', '712', '779', '118', '707', '706', '711', '155', '713', '710', '607', '609', '592', '739', '589', '608', '606', '569', '570', '612', '587', '567', '591', '564', '563', '566', '565', '568', '588', '1561', '1387', '1388', '1575', '1567', '1577', '1568', '152', '154', '153', '1203', '1204', '708', '709', '1576', '780', '781', '1573', '1574', '782', '121', '120', '1562', '1385', '1386', '1563']
convert_list = [['date_and_time','val']]
for arr_id in arr_ids:
url = "http://xxxyyyyx.com/predict/dataloc.php?param=rv&dfrm=01/24/2017&dto=01/25/2017&numloc=1&data24=0&locs[]="+arr_id
response = urllib.urlopen(url)
data = json.loads(response.read())
for key in data:
station_name = key
json_data = data[station_name]
for json in json_data:
epoch_time = json[0]/1000
formatted = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(epoch_time))
val = json[1]
new_list = [formatted,val]
convert_list.append(new_list)
with open(station_name+".csv", "wb") as f:
writer = csv.writer(f)
writer.writerows(convert_list)
Thrown Error:
Traceback (most recent call last): File "C:\Users\acer\Downloads\getwl_rv\json2csv\json2csv.py", line 9, in data = json.loads(response.read()) AttributeError: 'list' object has no attribute 'loads'
Upvotes: 0
Views: 6107
Reputation: 236
for json in json_data:
In this line, you've overwritten json
module name.
Upvotes: 5
Reputation: 191733
You've overwritten the module you imported
for json in json_data:
Try not to name your variables by modules or built in functions
Upvotes: 3