selenium cookie 处理
"""
用于精简cookies, 添加cookie
1. selenium 获取的cookies 是列表类型
2. 将获取的cookies只保留"domain", "name", "path", "value"这4个字段
3. "path" 非必须的
4. 添加cookie是已字典的形式添加
注意:
在添加cookies时,domain 格式:.xx.xx, 否则cookies可能会失效
"""
from selenium import webdriver
from conf import settings
class SeleniumCookie(object):
def __init__(self):
self.chrome_options = webdriver.ChromeOptions()
self.chrome_options.binary_location = r"C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe"
self.driver = webdriver.Chrome(
executable_path=settings.options["chromedriver"],
options=self.chrome_options,
)
def open_url(self):
"""
打开网页
:return:
"""
url = "https://www.baidu.com/?tn=62095104_7_oem_dg"
self.driver.get(url)
cookie_ = self.driver.get_cookies()
return cookie_
@staticmethod
def cookies_streamline1(cookie_list_):
"""
driver cookies 精简1
:param cookie_list_:
:return:
"""
cookie_list = []
for cookie_dict_ in cookie_list_:
cookie_dict = {}
for item in cookie_dict_:
if item in ["domain", "name", "path", "value"]:
cookie_dict[item] = cookie_dict_[item]
cookie_list.append(cookie_dict)
return cookie_list
@staticmethod
def cookies_streamline2(cookie_list_):
"""
driver cookies 精简2
:param cookie_list_:
:return:
"""
cookies_list = []
for cookie_dict in cookie_list_:
cookie_dict_ = {
"name": cookie_dict['name'],
"value": cookie_dict['value'],
"domain": cookie_dict['domain'],
}
cookies_list.append(cookie_dict_)
return cookies_list
def add_cookies(self, cookie_):
"""
将cookies列表 添加进 driver
:param cookie_: cookie 列表
:return:
"""
self.driver.delete_all_cookies()
for item in cookie_:
self.driver.add_cookie(item)
def main(self):
cookie_ = self.open_url()
print(cookie_)
if __name__ == '__main__':
cookie = SeleniumCookie()
cookie.main()