Cookie由变量名和值组成,类似JavaScript变量。其属性里既有标准的Cookie变量,也有用户自己创建的变量,属性中变量是用“变量=值”形式来保存。
根据Netscape公司的规定,Cookie格式如下:
Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE
NAME=VALUE:
这是每一个Cookie均必须有的部分。NAME是该Cookie的名称,VALUE是该Cookie的值
所以一般取cookie的值代入请求的时候,一般取NAME=VALUE的字符
selenium:
from selenium import webdriver browser = webdriver.Chrome() browser.get("https://www.baidu.com") print(browser.get_cookies()) # print(type(browser.get_cookies())) 列表内字典,包括cookie内所有类型的键值对
cookies= ";".join([dict_test["name"]+"="+dict_test["value"] for dict_test in driver.get_cookies()]) with open("zyou_cookie.txt","w",encoding="utf-8") as f: f.write(cookies)
列表生成式直接取值name=value
也可以一步一步来,
# cookie = [dict_test["name"]+"="+dict_test["value"] for dict_test in browser.get_cookies()] # # print(cookie) 取出["x=x","x=x"]格式列表 # cookie_str= ";".join(cookie) 取出以;分割替换的字符串,即以=字符串类型的cookie # print(cookie_str)
举个栗子:
(利用selenium模拟登陆,然后保存cookie,之后利用保存的cookie重新登陆网站(列表生成式))
from selenium import webdriver import requests driver= webdriver.Chrome() driver.maximize_window() driver.get("http://kaoshi.zhiyou900.com:8888/edustu/login/login.spr") driver.implicitly_wait(5) driver.find_element_by_name("j_username").send_keys("17633612346") driver.find_element_by_name("j_password").send_keys("******") driver.find_element_by_tag_name("button").click() cookies= ";".join([dict_test["name"]+"="+dict_test["value"] for dict_test in driver.get_cookies()]) with open("zhiyou_cookie.txt","w",encoding="utf-8") as f: f.write(cookies) with open("zhiyou_cookie.txt","r",encoding="utf-8") as f: cookies=f.read() headers = { "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", "Cookie":cookies } response = requests.get("http://kaoshi.zhiyou900.com:8888/edustu/me/edu/meda.spr",headers=headers) print(response.text)