Reading json from webpage - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Reading json from webpage (/thread-15273.html) |
Reading json from webpage - jmair - Jan-10-2019 For starters I'm just trying to learn how to pull some json data off a siriusxm page. (( Here's a link, but the time stamped page doesn't last very long. siriusxm page My code looks like it grabs all the data fine, but I need assistance on how to pull specific data from the json. import urllib3 import json http = urllib3.PoolManager() r = http.request('GET', 'https://www.siriusxm.com/metadata/pdt/en-us/json/channels/firstwave/timestamp/01-10-18:00:00') print(json.loads(r.data.decode('utf-8'))['channelMetadataResponse'])for example, the json.loads(r.data.decode('utf-8'))['channelMetadataResponse'] has the data just fine, but changing the syntax to json.loads(r.data.decode('utf-8'))['artists':'name'] gives a slicing error. Direction would be grateful. Thank you so much! In case the link dies or is blank. here is a sample from their page. you may need copy paste into http://jsonviewer.stack.hu to read it better. {"channelMetadataResponse":{"messages":{"code":100,"message":"Successful request"},"status":1,"metaData":{"channelId":"firstwave","channelName":"1st Wave","channelNumber":33,"currentEvent":{"artists":{"id":"8_l","name":"Talking Heads"},"baseUrl":"http:\/\/albumart.siriusxm.com\/albumart\/","keyIndex":"null","siriusXMId":568746322,"song":{"album":{"name":"Little Creatures"},"composer":"","creativeArts":[{"encrypted":false,"size":"THUMBNAIL","type":"IMAGE","url":"1730\/NDCA-000017418-003_t.jpg"},{"encrypted":false,"size":"SMALL","type":"IMAGE","url":"1730\/NDCA-000017418-003_s.jpg"},{"encrypted":false,"size":"MEDIUM","type":"IMAGE","url":"1730\/NDCA-000017418-003_m.jpg"},{"encrypted":false,"size":"LARGE","type":"IMAGE","url":""},{"encrypted":false,"type":"BIO","url":""},{"encrypted":false,"type":"REVIEWS","url":""},{"encrypted":true,"size":"THUMBNAIL","type":"IMAGE","url":"1730\/NDCA-000017418-003_t.jpg"},{"encrypted":true,"size":"SMALL","type":"IMAGE","url":"1730\/NDCA-000017418-003_s.jpg"},{"encrypted":true,"size":"MEDIUM","type":"IMAGE","url":"1730\/NDCA-000017418-003_m.jpg"},{"encrypted":true,"size":"LARGE","type":"IMAGE","url":""},{"encrypted":true,"type":"BIO","url":""},{"encrypted":true,"type":"REVIEWS","url":""}],"id":"$O4GA","name":"Stay Up Late"},"startTime":"2019-01-10T17:46:51Z"},"dateTime":"2019-01-10T17:49:52.311Z","version":1.1}}} RE: Reading json from webpage - stullis - Jan-10-2019 I believe the problem is your slice. To my knowledge, you cannot do ["artists":"name"]. That should be a dict retrieval key of ["artists"] to return the sub-dict or list contained in "artists". That said, what is the error you're receiving. RE: Reading json from webpage - jmair - Jan-10-2019 The error is TypeError: unhashable type: 'slice' So you're spot on =) RE: Reading json from webpage - buran - Jan-10-2019 data = json.loads(r.data.decode('utf-8')) artist_name = data['channelMetadataResponse']['currentEvent']['artist']['name']by the way, look at requests - you can directly get response as json http://docs.python-requests.org/en/master/user/quickstart/#json-response-content RE: Reading json from webpage - jmair - Jan-10-2019 Perfect, now I see how to call it. I appreciate the hint. artist_name = data['channelMetadataResponse']['metaData']['currentEvent']['artists']['name'] |