这期内容当中小编将会给大家带来有python爬关虫如何使用json库文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
实际应用中爬取到的信息肯定是需要保存到本地的。保存信息的方式有数据库和文件的形式,数据库我们后面再讲,现在让我们先看看怎么把信息保存到文件里。
这里我们主要讲讲将数据保存为json格式和csv格式,这就要用到两个库json库和csv库,这两个库都是python自带的库。
关于数据存储我们分两篇来讲,这一篇先讲json,下一篇再讲csv。
<强>一、关于json 强>
json的简介直接引用百度百科的定义:
json (JavaScript对象表示法,JS对象简谱)是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的JS规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得json成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
实际上json的格式和python中的字典很像,也是由键值对组成,但是python中的值可以为任何对象(列表,字典,字符串,数字等等),而json中的值只能是数组(列表),字典,字符串,数组,布尔值中的一中或几种。
其格式就像下面这样:
注意:json中的引号必须是双引号,否则会报错
{ ,,,“key1":,“value1" ,,,“key2":, (1、2、“value2"), ,,,“key3":, ,,,{ ,,,,,,,“key31":,“value1" ,,,,,,,“key32":, (1、2、“value2"), ,,,,,,,“key33":,真的, ,,,}, }
<强>二,json库的使用强>
json库一共有三个方法,分别是转储,转储,负载,负载。
其中转储和转储是用来把把字典和数组转换为json格式的,将把转换结果直接写入文件,转储返回字符串。
负载和负载是把json格式的数据转换为字典格式,负载直接从json文件中读取数据并返回字典对象,负载把字符串形式的json数据转换成字典格式。
下面讲讲这些方法的具体用法。
1、转储和转储的
函数原型是转储(obj, fp)第一个参数obj是要转换的对象,第二个参数fp是要写入数据的文件对象。
转储的函数原型是转储(obj)参数是要转换的对象
注意:如果要转换的对象里有中文字符的话,要把ensure_ascii设置为假否则中文会被编码为ascii格式
# - *安康;编码:utf-8 - * import json test =, { ,,,“key1":,“value1" ,,,“key2":, (1、2、“value2"), ,,,“key3": ,,,{ ,,,,,,,“key31":,“value1" ,,,,,,,“key32":, (1、2、“value2"), ,,,,,,,“key33":,真的, ,,,,,,,“key34":,“测试,, ,,,}, } #没有设置,ensure_ascii为,假的 with 开放(& # 39;test.json& # 39;,, & # 39; w # 39;,,编码=& # 39;utf - 8 # 39;), as 外交政策: ,,,json.dump(测试,fp) #设置了,ensure_ascii为,假的 with 开放(& # 39;test_no_ascii.json& # 39;,, & # 39; w # 39;,,编码=& # 39;utf - 8 # 39;), as 外交政策: ,,,json.dump (fp,测试,ensure_ascii=False) # test.json的文件内容为: # {…,…,“key33",,真的,,“key34":,“\ u6d4b \ u8bd5"}} # test_no_ascii.json的文件内容为: # {…,…,“key33",,真的,,“key34":,“测试“}} #注意到,python中的,真正的转换成了,Javascript里的,真的 #另外在打开文件的时候强烈建议用,编码指定文件编码 #还需要注意文件的打开模式,w是写入,文件已存在的话就覆盖 #要追加写入的话记得用,一个模式打开 时间=test_string json.dumps(测试,ensure_ascii=False) 打印(test_string)
2,负载和负载
负载的函数原型是负载(fp)参数fp是要读取的文件对象
加载的函数原型是加载(string)参数的字符串是要转换成python对象的json字符串,通常用来将网页中的json数据转换为python对象
# - *安康;编码:utf-8 - * import json # json格式的字符串 时间=test_string & # 39; {“key1":“value1",,“key2":, (1,, 2,,“value2"],,“key3":, {“key31":“value1",,“key32":, (1,, 2,,“value2"),, “key33":真的,,“key34":,“测试“}}& # 39; #从之前保存的,test_no_ascii.json中读取,注意模式为,r with 开放(& # 39;test_no_ascii.json& # 39;,, & # 39; " # 39;,,编码=& # 39;utf - 8 # 39;), as 外交政策: ,,,json_obj_from_file =, json.load (fp) 时间=json_obj_from_web json.loads (test_string) #打印两个返回结果的类型 print(类型(json_obj_from_file)) print(类型(json_obj_from_web)) #打印两个返回结果的内容 打印(json_obj_from_file) 打印(json_obj_from_web)python爬虫如何使用json库