利用urllib读取JSON,然后将JSON解析为Python对象 —— python学习笔记

1. 题目:

请利用urllib读取JSON,然后将JSON解析为python对象:
题目的意思是使用urllib访问一个接口,这个接口会放回json格式的数据,请将这一数据解析成python对象。
题目是廖雪峰老师的python教程中urllib的练习。
本篇博文只是针对这一题目,没有做详细的介绍,如果看不懂可以在下面评论问我,我会及时回复的。

2. 代码如下:

首先需要提到的是,在廖雪峰老师的练习测试中所给出的url是已经无法访问了的,因此很多同学在测试过程中一直无法测试成功,那么在本博文中就更换了一个url,这个url同样返回一个json格式的数据。

2.1 我个人的解法

from urllib import request
import json

def fetch_data(url):
    req = request.Request(url)  # 请求url(GET请求)
    with request.urlopen(req) as f:     # 打开url请求(如同打开本地文件一样)
        return json.loads(f.read().decode('utf-8'))  # 读数据 并编码同时利用json.loads将json格式数据转换为python对象

# 测试
URL = 'http://m.maoyan.com/ajax/movieOnInfoList?token='
data = fetch_data(URL)
print(data)
assert data['stid']== '576591972453269000'
print('ok')

"这是测试结果"
{'coming': [], 'movieIds': [1206875, 1240159, 345172, 249342, 1212512, 1174518, 1204476, 1229697, 123, 345655, 1235560, 341229, 1200265, 1218253, 341989, 1229768, 1249199, 1248656, 345036, 1238862, 1196131, 1217351, 1244914, 1189514, 1229963, 1212949, 1132519, 1133207, 42964, 1208282, 1238834, 1215919, 1246861, 344649, 1229950, 346465, 342165, 1233373, 1238950, 1233852, 78732, 78480, 345918, 1228750, 1219776], 'stid': '576591972453269000', 'stids': [{'movieId': 1206875, 'stid': '576591972453269000_a1206875_c0'}, {'movieId': 1240159, 'stid': '576591972453269000_a1240159_c1'}, {'movieId': 345172, 'stid': '576591972453269000_a345172_c2'}, {'movieId': 249342, 'stid': '576591972453269000_a249342_c3'}, {'movieId': 1212512, 'stid': '576591972453269000_a1212512_c4'}, {'movieId': 1174518, 'stid': '576591972453269000_a1174518_c5'}, {'movieId': 1204476, 'stid': '576591972453269000_a1204476_c6'}, {'movieId': 1229697, 'stid': '576591972453269000_a1229697_c7'}, {'movieId': 123, 'stid': '576591972453269000_a123_c8'}, {'movieId': 345655, 'stid': '576591972453269000_a345655_c9'}, {'movieId': 1235560, 'stid': '576591972453269000_a1235560_c10'}, {'movieId': 341229, 'stid': '576591972453269000_a341229_c11'}], 'total': 45, 'movieList': [{'id': 1206875, 'haspromotionTag': False, 'img': 'http://p1.meituan.net/w.h/movie/426f1f3f1b145f763b75a60c7c39c44a535093.jpg', 'version': 'v3d imax', 'nm': '大黄蜂', 'preShow': False, 'sc': 9.2, 'globalReleased': True, 'wish': 169967, 'star': '海莉·斯坦菲尔德,约翰·塞纳,小豪尔赫·兰登伯格', 'rt': '2019-01-04', 'showInfo': '今天218家影院放映4845场', 'showst': 3, 'wishst': 0}, {'id': 1240159, 'haspromotionTag': False, 'img': 'http://p1.meituan.net/w.h/movie/a596474c1c29118d908d1eff0fd4293f1017066.jpg', 'version': '', 'nm': '来电狂响', 'preShow': False, 'sc': 8.7, 'globalReleased': True, 'wish': 70498, 'star': '佟大为,马丽,霍思燕', 'rt': '2018-12-28', 'showInfo': '今天211家影院放映1580场', 'showst': 3, 'wishst': 0}, {'id': 345172, 'haspromotionTag': False, 'img': 'http://p0.meituan.net/w.h/movie/c02cf9ad1f2ddfd128069738f341de53882285.jpg', 'version': '', 'nm': '奎迪:英雄再起', 'preShow': False, 'sc': 8.9, 'globalReleased': True, 'wish': 13862, 'star': '迈克尔·B·乔丹,西尔维斯特·史泰龙,泰莎·汤普森', 'rt': '2019-01-04', 'showInfo': '今天191家影院放映676场', 'showst': 3, 'wishst': 0}, {'id': 249342, 'haspromotionTag': False, 'img': 'http://p0.meituan.net/w.h/movie/c106904da68edd848afd4a320976d051346321.jpg', 'version': 'v3d imax', 'nm': '海王', 'preShow': False, 'sc': 9.4, 'globalReleased': True, 'wish': 250996, 'star': '杰森·莫玛,艾梅柏·希尔德,妮可·基德曼', 'rt': '2018-12-07', 'showInfo': '今天186家影院放映673场', 'showst': 3, 'wishst': 0}, {'id': 1212512, 'haspromotionTag': False, 'img': 'http://p1.meituan.net/w.h/movie/bb84bede1711265dab1136f7a3dddc782801232.jpg', 'version': 'v3d imax', 'nm': '蜘蛛侠:平行宇宙', 'preShow': False, 'sc': 8.7, 'globalReleased': True, 'wish': 105401, 'star': '彭昱畅,沙梅克·摩尔,杰克·M·约翰森', 'rt': '2018-12-21', 'showInfo': '今天185家影院放映577场', 'showst': 3, 'wishst': 0}, {'id': 1174518, 'haspromotionTag': False, 'img': 'http://p1.meituan.net/w.h/movie/f8a129b3561bf6f726c591dfb78a698d1631786.jpg', 'version': '', 'nm': '“大”人物', 'preShow': True, 'sc': 0, 'globalReleased': False, 'wish': 17295, 'star': '王千源,包贝尔,王迅', 'rt': '2019-01-11', 'showInfo': '2019-01-11 下周五上映', 'showst': 4, 'wishst': 0}, {'id': 1204476, 'haspromotionTag': False, 'img': 'http://p0.meituan.net/w.h/movie/84f5bb5f7fb0191298d0e3e734b0fde64754356.jpg', 'version': '', 'nm': '印度暴徒', 'preShow': False, 'sc': 8.2, 'globalReleased': True, 'wish': 26894, 'star': '阿米尔·汗,阿米特巴·巴强,法缇玛·萨那·纱卡', 'rt': '2018-12-28', 'showInfo': '今天84家影院放映198场', 'showst': 3, 'wishst': 0}, {'id': 1229697, 'haspromotionTag': False, 'img': 'http://p1.meituan.net/w.h/movie/5e8ddac4b2fc796cc3037d66d6e709ad395098.jpg', 'version': '', 'nm': '四个春天', 'preShow': False, 'sc': 9.2, 'globalReleased': True, 'wish': 8089, 'star': '陆运坤,李桂贤', 'rt': '2019-01-04', 'showInfo': '今天103家影院放映162场', 'showst': 3, 'wishst': 0}, {'id': 123, 'haspromotionTag': False, 'img': 'http://p0.meituan.net/w.h/movie/c304c687e287c7c2f9e22cf78257872d277201.jpg', 'version': '', 'nm': '龙猫', 'preShow': False, 'sc': 9.2, 'globalReleased': True, 'wish': 155821, 'star': '秦岚,糸井重里,岛本须美', 'rt': '2018-12-14', 'showInfo': '今天62家影院放映159场', 'showst': 3, 'wishst': 0}, {'id': 345655, 'haspromotionTag': False, 'img': 'http://p1.meituan.net/w.h/movie/622e9f9a8b96ab69c02b351f48d147fd1188553.jpg', 'version': 'v3d imax', 'nm': '云南虫谷', 'preShow': False, 'sc': 5.1, 'globalReleased': True, 'wish': 162779, 'star': '蔡珩,顾璇,于恒', 'rt': '2018-12-29', 'showInfo': '今天76家影院放映159场', 'showst': 3, 'wishst': 0}, {'id': 1235560, 'haspromotionTag': False, 'img': 'http://p1.meituan.net/w.h/movie/018e4a9c9c88cbb9d32ca889a65be9ff4514904.jpg', 'version': '', 'nm': '白蛇:缘起', 'preShow': True, 'sc': 0, 'globalReleased': False, 'wish': 51209, 'star': '杨天翔,张喆,张遥函', 'rt': '2019-01-11', 'showInfo': '今天14家影院放映14场', 'showst': 4, 'wishst': 0}, {'id': 341229, 'haspromotionTag': False, 'img': 'http://p0.meituan.net/w.h/movie/9ef2613395eed698322cdc46ca3f34072433474.jpg', 'version': '', 'nm': '命运之夜——天之杯:恶兆之花', 'preShow': False, 'sc': 0, 'globalReleased': False, 'wish': 33786, 'star': '杉山纪彰,下屋则子,植田佳奈', 'rt': '2019-01-11', 'showInfo': '2019-01-11 下周五上映', 'showst': 4, 'wishst': 0}]}
ok

希望能够帮助到大家,有什么问题可以 直接评论即可,如果不够详细的话也可以说,我会及时回复的。

猜你喜欢

转载自blog.csdn.net/qq_41800366/article/details/85847218
今日推荐