selenium cookie 处理以及添加

selenium cookie 处理

# -*- coding: utf-8 -*-
"""
用于精简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()
        # 当google浏览器不是默认安装的时候,需要设置浏览器(也可以是其他浏览器,例如360安全浏览器)
        self.chrome_options.binary_location = r"C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe"

        self.driver = webdriver.Chrome(
            # executable_path="chromedriver.exe",  # chrome驱动器位置
            executable_path=settings.options["chromedriver"],  # chrome驱动器位置
            options=self.chrome_options,  # 扩展信息
        )

    def open_url(self):
        """
        打开网页
        :return:
        """
        # 访问网页
        url = "https://www.baidu.com/?tn=62095104_7_oem_dg"
        self.driver.get(url)

        # 获取 cookie, selenuum类型是列表
        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 ["name", "value", "domain"]:
                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'],
                # "path": cookie['path'],   # 非必须
                "domain": cookie_dict['domain'],
                # "domain": ".xx.xx",  # domain 格式
            }
            cookies_list.append(cookie_dict_)
        return cookies_list
    
    def add_cookies(self, cookie_):
        """
        将cookies列表 添加进 driver
        :param cookie_: cookie 列表
        :return: 
        """
        # 清理原始cookies
        self.driver.delete_all_cookies()
        # 添加cookies
        for item in cookie_:
            # 以字典的方式添加
            self.driver.add_cookie(item)
    
    def main(self):
        cookie_ = self.open_url()
        # cookie_ = self.cookies_streamline1(cookie_)  # 精简cookie1
        # cookie_ = self.cookies_streamline2(cookie_)  # 精简cookie2
        # self.add_cookies(cookie_)  # 添加cookie
        print(cookie_)


if __name__ == '__main__':
    cookie = SeleniumCookie()
    cookie.main()

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值