首页 / JSON / 26. 读写json数据
26. 读写json数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了26. 读写json数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2646字,纯文字阅读大概需要4分钟。
内容图文
在web应用中常用JSON(JavaScript Object Notation)格式传输数据,例如:
利用http://httpbin.org/API对发送的http请求进行观测。
爬虫程序利用Spalsh渲染引擎渲染页面。
要求:在Python中读取json数据。
解决方案:
标准库中的json模块,使用其中loads()、dumps()方法完成json数据的读写。
- 对于
requests
模块:
>>> import requests>>> r = requests.get('http://httpbin.org/headers')>>> r<Response [200]>>>> r.content b'{\n "headers": {\n "Accept": "*/*", \n "Accept-Encoding": "gzip, deflate", \n "Host": "httpbin.org", \n "User-Agent": "python-requests/2.22.0"\n }\n}\n'>>> r.text'{\n "headers": {\n "Accept": "*/*", \n "Accept-Encoding": "gzip, deflate", \n "Host": "httpbin.org", \n "User-Agent": "python-requests/2.22.0"\n }\n}\n'
- 对于
json
模块:
json数据解析(反序列化):json.loads()
>>> import json>>> d = json.loads(r.text) #python解析为字典>>> d{'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.22.0'}}>>> d['headers']{'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.22.0'}>>> d['headers']['Host']'httpbin.org'
- 方案示例:
Spider(Json) → Splash → Web
创建splash容器
$ sudo docker pull scrapinghub/splash $ sudo docker run -itd -p 8050:8050 scrapinghub/splash
数据序列化为json数据:json.dumps()
>>> import requests>>> import json>>> requests.post<function post at 0x7fad7195c378>>>> url = 'http://localhost:8050/render.html'>>> headers = {'content-type': 'application/json'}>>> data = {'url': 'http://jd.com', 'timeout': 20, 'images': 0} #以京东为例,timeout指定渲染时间,images为0表示不渲染图片>>> json_data = json.dumps(data) #将python字典转换为json数据,即序列化>>> json_data'{"url": "http://jd.com", "timeout": 20, "images": 0}'>>> r2 = requests.post(url, headers=headers, data=json_data)>>> r2<Response [200]>>>> r2.text'\n\n京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!\n\n\n #中间省略 M11.4,0.9C11.4,0.9,11.4,0.9,11.4,0.9L11.4,0.9z">京东秒杀特色优选频道广场为你推荐客服反馈\ue606顶部
\n
\n\n\n\n\n
\n\n
\n\n
\n'
除json.loads()
和json.dumps()
外,json模块还有json.load()
和json.dump()
。
dumps()和dump()是序列化方法。dumps()只完成了序列化为str;dump()必须传文件描述符,将序列化的str保存到文件中。
loads()和load()是反序列化方法。loads()只完成了反序列化;load()只接收文件描述符,完成了读取文件和反序列化。
>>> data{'url': 'http://jd.com', 'timeout': 20, 'images': 0}>>> f = open('demo.json', 'w')>>> json.dump(data, f) #将字典转化为json数据>>> f.close()
# cat demo.json {"url": "http://jd.com", "timeout": 20, "images": 0}
>>> f2 = open('demo.json')>>> json.load(f2) #将json数据转化为字典{'url': 'http://jd.com', 'timeout': 20, 'images': 0}
内容总结
以上是互联网集市为您收集整理的26. 读写json数据全部内容,希望文章能够帮你解决26. 读写json数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。