分兩步來做:
第一步:登錄CSDN並獲取cookies,並保存到json文件或者excel文件中,本文使用excel文件保存cookie數據。
第二步:讀取excel文件中的cookie數據,添加cookie信息。
import os import time import xlwt,xlrd from selenium import webdriver current_path=os.path.dirname(__file__) webdriver_path=os.path.join(current_path,'../webdriver/chromedriver.exe') driver=webdriver.Chrome(executable_path=webdriver_path) driver.implicitly_wait(10) # (1)手動登錄CSDN獲取cookie。 driver.get('https://www.csdn.net/') driver.maximize_window() time.sleep(30)#等待這段時間手動輸入用戶名、密碼驗證碼登錄系統 cookies=driver.get_cookies()#獲取登錄過程中的cookie信息 print(cookies) # 把cookies的key寫入excel文件中第一行 workbook=xlwt.Workbook(encoding='utf-8') worksheet=workbook.add_sheet('Sheet1') worksheet.write(0,0,'domain') worksheet.write(0,1,'httpOnly') worksheet.write(0,2,'name') worksheet.write(0,3,'path') worksheet.write(0,4,'secure') worksheet.write(0,5,'value') # 使用for循環把cookie的value值寫入接下來的每一行中 for row_num in range(1,len(cookies)+1):#第0行是key值,所以從第一行開始寫入value值 worksheet.write(row_num,0,cookies[row_num-1]['domain']) worksheet.write(row_num,1,cookies[row_num-1]['httpOnly']) worksheet.write(row_num,2,cookies[row_num-1]['name']) worksheet.write(row_num,3,cookies[row_num-1]['path']) worksheet.write(row_num,4,cookies[row_num-1]['secure']) worksheet.write(row_num,5,cookies[row_num-1]['value']) workbook.save('CSND_Cookie.xls') #保存cookie文件
我們按照步驟一步步來做,第一步:打開CSDN系統,點擊登錄/注冊按鈕,跳轉到登錄頁面,有很多種登錄方式,我這里使用微信掃碼登錄獲取cookies(因為使用賬號、密碼登錄時需要安全驗證,且手動處理失敗,沒找到解決的辦法。),登錄后獲取到的cookie存到excel文件中。代碼如下。
這是存放在excel文件中的cookie數據

第二步:從excel中讀取cookie_dict,讀取到的cookie_dict放在cookieList列表中,然后從列表中取出一個個字典添加到cookie中,要注意,由於cookie中的httpOnly和secure在存到excel前,他們是布爾類型的,存進去后已經變成string類型了,所以取出來后要轉成布爾類型,才可以添加到cookie中去。添加完成后,刷新即可免密登錄CSDN。
import os import time import xlrd from selenium import webdriver current_path=os.path.dirname(__file__) webdriver_path=os.path.join(current_path,'../webdriver/chromedriver.exe') driver=webdriver.Chrome(executable_path=webdriver_path) driver.implicitly_wait(10) driver.get('https://www.csdn.net/') driver.maximize_window()
# (2)從excel讀取cookie並添加 workbook=xlrd.open_workbook('CSND_Cookie.xls') worksheet=workbook.sheet_by_name('sheet1') # 使用for循環讀取cookie信息,並存放到cookieList表中。 cookie_list=[] for row_num in range(1,worksheet.nrows): cookie_dict={} cookie_dict["domain"]=worksheet.cell_value(row_num,0) cookie_dict["httpOnly"]=bool(worksheet.cell_value(row_num,1)) #excel中的是true false是String類型,這里需要轉換成bool類型 cookie_dict["name"]=worksheet.cell_value(row_num,2) cookie_dict["path"]=worksheet.cell_value(row_num,3) cookie_dict["secure"]=True if worksheet.cell_value(row_num,4)=='TRUE' else False #也可以使用三目運算符把String類型轉換成布爾類型 cookie_dict["value"]=worksheet.cell_value(row_num,5) cookie_list.append(cookie_dict) # 添加cookie for cookie in cookie_list: driver.add_cookie(cookie) #添加后刷新瀏覽器自動登錄 time.sleep(3) driver.refresh()
以上兩段代碼親測可用,如有問題,歡迎交流哦
