python数据采集练习 根据指定av号下载bilibili视频(四)【json库解析cookie】

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

你可能感兴趣的:(python练习(1),json,python)