JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。JSON的数据格式其实就是python里面的字典格式。python中内嵌有json库以实现它。
直白地讲,如果你拿到这么一串字符串,比如
"{'name': 'kun', 'age': 19, 'time': False}"
注意,它只是一个字符串,只不过内容看起来像字典
我们可以用json.loads(...)将字符串转化为字典
import json
Str = '{"name": "kun", "age": "19", "time": "None"}'
dic = json.loads(Str)
print(dic["name"])
最终会输出 kun
这里要注意,loads函数内传入的字符串内部只能用双引号,不可用单引号,否则会报json.decoder.JSONDecodeError
同时,我们可以用json.load(fp)从文件中提取字符串转化为字典。fp为文件指针。
import json
Str = '{"name": "kun", "age": "19", "time": "None"}'
fp = open("test.txt",'w')
fp.write(Str)
fp.close()#将字符串写入文件
fp = open("test.txt",'r')
dic = json.load(fp)#从文件中读字符串并转化为字典
print(dic["name"])
最终会输出 kun
json也允许我们将字典转化为字符串
str = json.dumps(dict) 将字典转化为字符串
json.jump(dict,fp)
将字典转化为字符串以便将它写入文件
好了。根据已经掌握的知识,我们可以写一个自动登录bilibili的函数
功能:首次登陆bilibili,则打开登录页面,在登录完毕后将登录信息保存至cookie
以后登录时,自动加载已保存的登录信息
返回值:保存的cookie
备注:loginUrl = "https://passport.bilibili.com/login"
global cookies == None
def login(): # 登陆,返回登陆cookie
global cookies
if os.path.exists("cookies.txt"):
print("\n已自动登录")
fp = open("cookies.txt", "r")
cookies = json.load(fp)
else:
print("\n您从没登陆过,请在打开的页面中登陆")
driver.get(loginUrl)
while driver.current_url == loginUrl:
time.sleep(1)
time.sleep(1)
print("\n登录成功!您的登陆信息已保存,下次无需登陆。")
cookies = driver.get_cookies()
fp = open("cookies.txt", "w")
json.dump(cookies, fp) # 将cookie写入文件,方便下次使用
return cookies