用于登錄驗(yàn)證過(guò)于復(fù)雜的網(wǎng)站熬粗,難以完全用代碼模擬登錄,則可以手動(dòng)通過(guò)瀏覽器登錄后獲取cookies保存到文本支救,然后再通過(guò)讀取和更新cookies進(jìn)行后續(xù)操作
#導(dǎo)入requests包
import requests
targetURL = '目標(biāo)網(wǎng)站地址'
#設(shè)置頭UA
headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
#開(kāi)啟一個(gè)session會(huì)話
session = requests.session()
#設(shè)置請(qǐng)求頭信息
session.headers = headers
#申明一個(gè)用于存儲(chǔ)手動(dòng)cookies的字典
manual_cookies={}
##打開(kāi)手動(dòng)設(shè)置的cookies文件
#部分網(wǎng)站需要滑動(dòng)驗(yàn)證蜘犁,這里通過(guò)瀏覽器登錄成功后獲取cookies手動(dòng)存到文本來(lái)繞過(guò)驗(yàn)證,后續(xù)cookies自動(dòng)更新
with open("manual_cookies.txt",'r',encoding='utf-8') as frcookie:
cookies_txt = frcookie.read().strip(';') #讀取文本內(nèi)容
#手動(dòng)分割添加cookie
for item in cookies_txt.split(';'):
name,value=item.strip().split('=',1) #用=號(hào)分割,分割1次
manual_cookies[name]=value #為字典cookies添加內(nèi)容
#將字典轉(zhuǎn)為CookieJar:
cookiesJar = requests.utils.cookiejar_from_dict(manual_cookies, cookiejar=None,overwrite=True)
#將cookiesJar賦值給會(huì)話
session.cookies=cookiesJar
#向目標(biāo)網(wǎng)站發(fā)起請(qǐng)求
res = session.get(targetURL)
#將CookieJar轉(zhuǎn)為字典:
res_cookies_dic = requests.utils.dict_from_cookiejar(res.cookies)
#將新的cookies信息更新到手動(dòng)cookies字典
for k in res_cookies_dic.keys():
manual_cookies[k] = res_cookies_dic[k]
print(manual_cookies)
#重新將新的cookies信息寫(xiě)回文本
res_manual_cookies_txt = ""
#將更新后的cookies寫(xiě)入到文本
for k in manual_cookies.keys():
res_manual_cookies_txt += k+"="+manual_cookies[k]+";"
#將新的cookies寫(xiě)入到文本中更新原來(lái)的cookies
with open('manual_cookies.txt',"w",encoding="utf-8") as fwcookie:
fwcookie.write(res_manual_cookies_txt);