1.selenium添加cookie访问 需要登录才能访问的链接
selenium 访问 “https://developer.org.com”,如果没登陆,则跳转到"https://console.org.com/login",此时selenium取到的cookie的domain是:.console.org.com。
而domain 是 .console.org.com 去访问 “https://developer.org.com”,也是不匹配,访问失败,所以需要手动定义domain,可以取相同部分:.org.com。
def cookie_login_data():url = login_urlpayload = {"grant_type": "password","username": user_password[0],"password": user_password[1],"client_id": "web_platform","client_secret": "changeit"}res = requests.request("POST", url, json=payload)access_token = res.json().get("access_token")# selenium 访问 “https://developer.org.com”,如果没登陆,则跳转到"https://console.org.com/",此时的domain是:.console.org.com# domain是:.console.org.com 去访问 “https://developer.org.com”,也是不匹配,访问失败,所以domain取相同部分:.org.com# 需要传domain,否则cooke不会生效cookie = {'domain': domain, "name": "access_token", "value": access_token}return cookie
2.定时更新token
公司的cookie的token默认的有效期是1小时,如果爬虫的时间超过1小时后,1小时后的链接都会爬取失败,所以,需要判断执行时间超过一定阈值,则更新cookie的token
def refresh_driver_cookie(start_time, _driver):endtime = datetime.datetime.now()print("endtime",endtime)duringtime = endtime - start_timeprint("duringtime",duringtime.seconds)# token默认是1小时失效,设置如果运行了30分钟,则重新获取登录的token写入到selenium的cookieif duringtime.seconds > 60*30:print("duringtime, to do update cookie")# 删除所有的cookie_driver.delete_all_cookies()# 获取新的cookie,并写入cookie = cookie_login_data()_driver.add_cookie(cookie)# 重置开始时间start_time = endtimeprint("start_time",start_time)# 需要把重置的时间return回去,让对象self.time接收更新,否则self.time一直都是记录的开始时间return start_time, _driverelse:# 如果不满足条件,则直接返回记录的开始时间、返回添加初始cookie的driverreturn start_time, _driver