IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python Selenium.WebDriverWait 对Cookies的处理及应用『模拟登录』 -> 正文阅读

[Python知识库]Python Selenium.WebDriverWait 对Cookies的处理及应用『模拟登录』

Python Selenium.WebDriverWait 对Cookies的处理及用途『模拟登录』


一、Cookie的介绍🍉

Cookie(复数形态:Cookies),又称“小甜饼”,为小型文本文件。某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密),Cookie保存在客户端中,按在客户端中的存储位置,可分为 内存Cookie和硬盘Cookie
内存 Cookie 由浏览器维护,浏览器关闭即消失,存在时间短暂。硬盘Cookie保存在硬盘里,除非用户手动清理或到了过期时间,硬盘Cookie不会清除,存在时间较长。所以,按存在时间,可分为非持久Cookie和持久Cookie

Cookie的典型应用场景

  • 网上购物: 当用户选购第一项商品,网站在向用户发送网页的时候,还发送了一段Cookie会记录着那项商品的信息,当用户访问另一个网页时,浏览器会把Cookie发送给服务器,这样服务器就能知道用户之前选购了什么,用户继续选购商品,服务器就会在原来那段Cookie里追加新的商品信息。结账的时候,服务器读取发送来的Cookie即可。
  • 网站账户登陆: 网页登陆是大部分人都遇到过的,网站往往会请求用户输入账户和密码以登陆网页,在登陆之后下次再去浏览网页时,网站会自动记住我们的密码,不需要再去进行重复性的账号密码输入即可保持登陆状态,或则用户可以勾选 「下次自动登陆」。
    这是在第一次登陆时,服务器发送了包含登录凭据(用户名加密码的某种加密形式)的Cookie到用户的硬盘上进行保存,之后再登录时,如果该Cookie尚未到期,浏览器会发送该Cookie,服务器验证凭据,验证通过即可免去再登陆就可保持登陆状态

二、Cookie在浏览器中的形式结构

Cookie对于爬虫来说是比较常用到的,一般随着爬虫请求发送,是实现反反爬的参数之一

我使用的是 Edge 浏览器,但 Chrome 浏览器其实也差不多一样。以百度首页为例,打开调试工具(F12),点击Application(应用程序),选择 Storage 下的 Cookies 选项,找到当前网页即可看到所有的 Cookie
可以发现的是,Cookie在浏览器中是一条一条存在的,每条Cookie都是一个键值对的结构
在这里插入图片描述
在这里插入图片描述


三、Selenium对Cookie的操作🥗

Selenium 能够实现操作浏览器的Cookie,因为本身就是其调用浏览器运行,能操作的内容有对Cookie的读取、新增和删除

1)、读取Cookie

读取Cookie有两种方法,分别是 driver.get_cookies()driver.get_cookie(name)
从方法名上来看一个带s一个不带s,功能上看带s的是获取所有的Cookie对象,不带s的是获取指定的单条Cookie

  • driver.get_cookies() 能够获取所有的Cookie,并以 列表 形式返回所有Cookie

    演示代码:👇

    from selenium import webdriver
    
    browser = webdriver.Edge(executable_path=r"msedgedriver.exe")
    browser.get("https://www.baidu.com/")
    
    print(browser.get_cookies())
    
    [{'domain': '.baidu.com', 'expiry': 1629821019, 'httpOnly': False, 'name': 'BA_HECTOR', 'path': '/', 'secure': False, 'value': '8s818la521202160bp1gia2ic0r'}, {'domain': '.baidu.com', 'httpOnly': False, 'name': 'H_PS_PSSID', 'path': '/', 'secure': False, 'value': '34437_34441_31254_33848_34072_34092_34106_26350_34416_34390'}, {'domain': '.baidu.com', 'expiry': 1661353419, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': 'EDB65890D2F1E97267AD56A70D8F24E8:FG=1'}, {'domain': '.baidu.com', 'expiry': 3777301066, 'httpOnly': False, 'name': 'BIDUPSID', 'path': '/', 'secure': False, 'value': 'EDB65890D2F1E972DC3D6A6A8114E431'}, {'domain': '.baidu.com', 'expiry': 3777301066, 'httpOnly': False, 'name': 'PSTM', 'path': '/', 'secure': False, 'value': '1629817419'}, {'domain': 'www.baidu.com', 'expiry': 1630681419, 'httpOnly': False, 'name': 'BD_UPN', 'path': '/', 'secure': False, 'value': '12314753'}, {'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'BD_HOME', 'path': '/', 'secure': False, 'value': '1'}]
    
  • driver.get_cookie(name) 根据名称获取单个Cookie

    源码:
    对于.get_cookie(name)方法,咱们可以先去扩展一下去看源码,无非就是先用.get_cookies()方法获取所有的Cookie,再通过循环判断提取目标Cookie

    def get_cookie(self, name):
       """
       Get a single cookie by name. Returns the cookie if found, None if not.
    
       :Usage:
           driver.get_cookie('my_cookie')
       """
       if self.w3c:
           try:
               return self.execute(Command.GET_COOKIE, {'name': name})['value']
           except NoSuchCookieException:
               return None
       else:
           cookies = self.get_cookies()
           for cookie in cookies:
               if cookie['name'] == name:
                   return cookie
           return None
    

    演示代码:👇

    获取百度首页名为BD_HOME的Cookie内容,并将其输出

    from selenium import webdriver
    
    browser = webdriver.Edge(executable_path=r"msedgedriver.exe")
    browser.get("https://www.baidu.com/")
    
    print(browser.get_cookie("BD_HOME"))
    
    {'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'BD_HOME', 'path': '/', 'secure': False, 'value': '1'}
    

2)、新增Cookie

新增Cookie只有一个方法,那就是driver.add_cookie(cookie_dict),根据 二、Cookie在浏览器中的形式结构 可以得知Cookie是一个键值对数据,传入的Cookie对象中必须包含namevalue两个属性,缺少其中任何一个都会添加失败。除此之外还有四个可选属性,分别为pathdomainsecureexpiry

源码:
让咱们先来看看源码,源码中就有对 属性值的描述注释,还是值得去看的

def add_cookie(self, cookie_dict):
    """
    Adds a cookie to your current session.

    :Args:
     - cookie_dict: A dictionary object, with required keys - "name" and "value";
        optional keys - "path", "domain", "secure", "expiry"

    Usage:
        driver.add_cookie({'name' : 'foo', 'value' : 'bar'})
        driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/'})
        driver.add_cookie({'name' : 'foo', 'value' : 'bar', 'path' : '/', 'secure':True})

    """
    self.execute(Command.ADD_COOKIE, {'cookie': cookie_dict})

演示代码:👇

向其百度首页添加一个名为 MyCookie 的Cookie,其值为 this is my cookie!

from selenium import webdriver

browser = webdriver.Edge(executable_path=r"msedgedriver.exe")
browser.get("https://www.baidu.com/")

browser.add_cookie({"name": "MyCookie", "value": "this is my cookie!"})

在打开的浏览器窗口,打开调试工具就能看到添加的Cookie
在这里插入图片描述

3)、删除Cookie

删除Cookie与读取Cookie类似,也有两个方法,分别是driver.delete_all_cookies()driver.delete_cookie(name),一个是全部删除,一个是删除其中一个,用法也于读取Cookie一样

  • driver.delete_all_cookies() 删除全部的Cookie
    演示代码:👇

    from selenium import webdriver
    
    browser = webdriver.Edge(executable_path=r"msedgedriver.exe")
    browser.get("https://www.baidu.com/")
    
    browser.delete_all_cookies()
    

    可以看到的是,百度首页在浏览器中的Cookie已经全部被清空了 在这里插入图片描述

  • driver.delete_cookie(name) 删除指定名称的Cookie
    演示代码:👇

    删除百度首页名为BD_HOME的Cookie内容

    from selenium import webdriver
    
    browser = webdriver.Edge(executable_path=r"msedgedriver.exe")
    browser.get("https://www.baidu.com/")
    
    browser.delete_cookie("BD_HOME")	
    

    可以看到名为BD_HOME的Cookie已经在浏览器中找不到了
    在这里插入图片描述


四、利用Selenium进行模拟登录并使用Cookies

爬虫领域自动化测试中,总有一些网站只有登录后才能访问,或则某些数据只有在登录后才会出现。由于用户登陆后的身份信息通常会存放在Cookie中,因此可以将登录后的Cookie保存,再将此Cookie添加到网页中来模拟已登录状态。能有效避免在登录页面中进行多次操作,即一次登录后即可保留登录状态

实现的步骤很简单,1. 只需要将当前页面中的Cookie全部清空,2. 然后直接添加 已经在登录状态下拥有身份信息 的Cookie在网页中,3. 最后别忘记刷新一下网页driver.refresh,就可以实现页面保留登录状态的效果

步骤示例:👇

# 删除所有的Cookies
driver.delete_all_cookies()
# 逐个添加Cookie,可以使用循环
driver.add_cookie(cookie_dict)
driver.add_cookie(cookie_dict)
...
driver.refresh()

实际演示:👇🏻

还是以百度首页为例,实现流程:

  • 先使用 Selenium.WebDriverWait 动作行为模拟网站登录
  • 将登录后的Cookies获取并保存到本地(以Json格式)
  • 下次打开网页使用Cookie进行网页登录

需要注意的是,此代码为简单的百度首页登录,并未实现图片验证等自动验证功能,更多为参考意义,具体以实际为主

1)、让咱先来看看对百度首页的模拟登录

这里我使用的是Xpath定位 driver.find_element_by_xpath(xpath),当然也是可以使用其他的定位方式,如ID定位driver.find_element_by_id(id_)

由于存在百度首页登录时会出现验证的情况,代码并未对此进行自动验证处理,这时候就需要手动验证了

def handle_login(username, pwd, isverify=False):
    """
    百度首页登录处理方法
    :param username: 用户名
    :param pwd: 用户密码
    :param isverify: 是否存在网页验证
    """
    # 点击右上角登录按钮
    self.find_by_xpath(r"//a[@id='s-top-loginbtn']").click()
    time.sleep(1)
    # 点击用户名登录按钮
    self.find_by_xpath(r"//p[@id='TANGRAM__PSP_11__footerULoginBtn']").click()
    # 向输入框输入账户名
    self.find_by_xpath(r"//input[@id='TANGRAM__PSP_11__userName']").send_keys(username)
    # 向输入框输入密码
    self.find_by_xpath(r"//input[@id='TANGRAM__PSP_11__password']").send_keys(pwd)
    # 点击登录按钮
    self.find_by_xpath(r"//input[@id='TANGRAM__PSP_11__submit']").click()
    # 手动图形验证等待
    input("请手动进行图形验证,完毕后输入任意内容继续运行")
    if isverify:
        # 点击发送验证码按钮
        self.find_by_xpath(r"//input[@id='TANGRAM__29__button_send_mobile']").click()
        # 等待用户输入手动验证码
        vcode = input("请输入六位数验证码:")
        self.find_by_xpath(r"//input[@id='TANGRAM__29__input_vcode']").send_keys(vcode)
        # 点击确定按钮
       self.find_by_xpath(r"//input[@id='TANGRAM__29__button_submit']").click()

2)、Cookies处理

需要可持久化存储Cookie,以及对Cookie进行读取并判断是否存在
简单写两个函数

def save_cookies(data, encoding="utf-8"):
    """
    百度首页Cookies保存方法
    :param data: 所保存数据
    :param encoding: 文件编码,默认utf-8
    """
    with open(self.f_path, "w", encoding=encoding) as f_w:
        json.dump(data, f_w)


def load_cookies(encoding="utf-8"):
    """
    百度首页Cookies读取方法
    :param encoding: 文件编码,默认utf-8
    """
    if os.path.isfile(self.f_path):
        with open(self.f_path, "r", encoding=encoding) as f_r:
            user_status = json.load(f_r)
        return user_status

3)、使用Cookie进行网页登录

根据刚开始的步骤示例,修改网页中的Cookies是很简单的
先将网页中原有的Cookies全部删除,然后通过循环一个个将保存的登录Cookie全部添加进网页

def cookies_login(cookies: list):
    """
    百度首页Cookies登录方法
    :param cookies: 网页所需要添加的Cookie
    """
    self.browser.delete_all_cookies()
    for c in cookies:
        self.browser.add_cookie(c)
    self.browser.refresh()

4)、将上述流程总结写成一个对象

import os
import json
import time
from selenium import webdriver


class BaiduLogin:
    def __init__(self, url, executable_path, f_path):
        """
        对象初始化
        :param url: 百度首页地址
        :param executable_path: 浏览器驱动路径
        :param f_path: Cookies文件保存路径
        """
        self.url = url
        self.browser = self.start_browser(executable_path)
        self.f_path = f_path

    @staticmethod
    def start_browser(executable_path):
        return webdriver.Edge(executable_path=executable_path)

    def start_url(self):
        self.browser.get(url)

    def find_by_xpath(self, xpath):
        return self.browser.find_element_by_xpath(xpath)

    def baidu_login(self, *args):
        self.start_url()
        if cookies := self.load_cookies():
            self.__cookies_login(cookies)
        else:
            self.__handle_login(*args)

    def __handle_login(self, username, pwd, isverify=False):
        """
        百度首页登录处理方法
        :param username: 用户名
        :param pwd: 用户密码
        :param isverify: 是否存在网页验证
        """
        # 点击右上角登录按钮
        self.find_by_xpath(r"//a[@id='s-top-loginbtn']").click()
        time.sleep(1)
        # 点击用户名登录按钮
        self.find_by_xpath(r"//p[@id='TANGRAM__PSP_11__footerULoginBtn']").click()
        # 向输入框输入账户名
        self.find_by_xpath(r"//input[@id='TANGRAM__PSP_11__userName']").send_keys(username)
        # 向输入框输入密码
        self.find_by_xpath(r"//input[@id='TANGRAM__PSP_11__password']").send_keys(pwd)
        # 点击登录按钮
        self.find_by_xpath(r"//input[@id='TANGRAM__PSP_11__submit']").click()
        # 手动图形验证等待
        input("请手动进行图形验证,完毕后输入任意内容继续运行")
        if isverify:
            time.sleep(1)
            # 点击发送验证码按钮
            self.find_by_xpath(r"//input[@id='TANGRAM__29__button_send_mobile']").click()
            # 等待用户输入手动验证码
            vcode = input("请输入六位数验证码:")
            self.find_by_xpath(r"//input[@id='TANGRAM__29__input_vcode']").send_keys(vcode)
            # 点击确定按钮
            self.find_by_xpath(r"//input[@id='TANGRAM__29__button_submit']").click()
        self.save_cookies(self.browser.get_cookies())

    def __cookies_login(self, cookies: list):
        """
        百度首页Cookies登录方法
        :param cookies: 网页所需要添加的Cookie
        """
        self.browser.delete_all_cookies()
        for c in cookies:
            self.browser.add_cookie(c)
        self.browser.refresh()

    def save_cookies(self, data, encoding="utf-8"):
        """
        百度首页Cookies保存方法
        :param data: 所保存数据
        :param encoding: 文件编码,默认utf-8
        """
        with open(self.f_path, "w", encoding=encoding) as f_w:
            json.dump(data, f_w)

    def load_cookies(self, encoding="utf-8"):
        """
        百度首页Cookies读取方法
        :param encoding: 文件编码,默认utf-8
        """
        if os.path.isfile(self.f_path):
            with open(self.f_path, "r", encoding=encoding) as f_r:
                user_status = json.load(f_r)
            return user_status
    
    def quit(self):
        # 关闭浏览器
        self.browser.quit()

调用:👇

target_driver = "msedgedriver.exe"
url, cookie_fname = r"https://www.baidu.com/", "百度登录Cookies.json"
login = BaiduLogin(url, target_driver, cookie_fname)
login.baidu_login("用户名", "用户密码")

五、获取的Cookies配合requests使用

在使用requests请求之前,我们得先知道对于requests来说是怎么使用Cookie

以百度首页为例,打开调试工具(F12),点击Network(网络\抓包工具),如果空白的话就按Ctrl + R 快捷键刷新网页读取,找到位于第一个的请求www.baidu.com,选择Headers(标头)后在下方就能看到咱们对于https://www.baidu.com/这个链接的Request Headers(请求头),在里面就能找到Cookie属性

但信心的朋友会发现在这里的cookie格式与我们在Application(应用程序),选择 Storage 下的 Cookies 选项看到的完全不一样,但其实都是同一些cookies数据,将两者放在一起进行仔细比较还是能发现共同点的

对于请求头来说,需要的只有namevalue这也是为什么在 三、Selenium对Cookie的操作 新增Cookie中讲到 传入的Cookie对象中必须包含name和value两个属性,两者以=号拼接,每一个cookie以;进行分割
在这里插入图片描述

图 5.1

在这里插入图片描述

图 5.2



四、利用Selenium进行模拟登录并使用Cookies 中,我们使用了 Selenium 将Cookie 获取并将其了可持久化存储成文件,那么只需要对之前的代码进行一些修改,或则直接拿存储的Cookie数据来使用就能让获取的Cookies配合requests使用

在requests来说,使用Cookie常用的有两种方式:

  • 通过请求头方式直接将Cookies给传入
  • requests.getrequests.post 方法中传入cookies参数

为了便于演示,会将requests返回的页面源码保存到html文件中进行展示

1)、通过请求头方式

在使用请求头方式时,想要事先将Cookies处理成与 图 5.1 中那样的格式,通过循环就能搞定,这没什么难度

预处理Cookies格式:

def cookie_headers(cookies: list):
    """
    cookies 标头格式化处理函数
    :param cookies: selenium获取的cookies
    """
    cookies = [f"{i['name']}={i['value']}" for i in cookies]
    return "; ".join(cookies)

使用requests发送请求:

import os
import json
import requests


def cookies_load(path, encoding="utf-8"):
    if os.path.isfile(path):
        with open(path, "r", encoding=encoding) as f_r:
            cookies = json.load(f_r)
        return cookies


def cookie_headers(cookies: list):
    """
    cookies 标头格式化处理函数
    :param cookies: selenium获取的cookies
    """
    cookies = [f"{i['name']}={i['value']}" for i in cookies]
    return "; ".join(cookies)


def get_and_save(url, path, encoding="utf-8", **kwargs):
    """
    使用requests对网址发送请求,并将请求结果存储
    :param url: 网址
    :param path: 存储文件路径
    :param encoding: 文件编码,默认utf-8
    """
    response = requests.get(url, **kwargs)
    if response.ok:
        response.encoding = encoding
        with open(path, "w", encoding=encoding) as f_w:
            f_w.write(response.text)


url = r"https://www.baidu.com/"
headers = {
    "User-Agent": (r"请使用自己的"
                   r"UA识别码"),
    "Cookie": cookie_headers(cookies_load("百度登录Cookies.json"))
}

get_and_save(url, "baidu.html", headers=headers)

2)、使用cookies参数

值得注意的是,传入的cookies是一个字典,那么就需要对已有的cookies数据进行处理,将其转化成requests能够识别的字典数据类型

预处理Cookies格式:

def cookie_headers(cookies: list):
    """
    cookies 转化为字典函数
    :param cookies: selenium获取的cookies
    """
    dic = {}
    for i in cookies:
        dic[i["name"]] = i["value"]
    return dic

使用requests发送请求:

import os
import json
import requests


def cookies_load(path, encoding="utf-8"):
    if os.path.isfile(path):
        with open(path, "r", encoding=encoding) as f_r:
            cookies = json.load(f_r)
        return cookies


def cookie_headers(cookies: list):
    """
    cookies 转化为字典函数
    :param cookies: selenium获取的cookies
    """
    dic = {}
    for i in cookies:
        dic[i["name"]] = i["value"]
    return dic


def get_and_save(url, path, encoding="utf-8", **kwargs):
    """
    使用requests对网址发送请求,并将请求结果存储
    :param url: 网址
    :param path: 存储文件路径
    :param encoding: 文件编码,默认utf-8
    """
    response = requests.get(url, **kwargs)
    if response.ok:
        response.encoding = encoding
        with open(path, "w", encoding=encoding) as f_w:
            f_w.write(response.text)


url = r"https://www.baidu.com/"
headers = {
    "User-Agent": (r"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                   r"Chrome/92.0.4515.159 Safari/537.36 Edg/92.0.902.84"),
}

get_and_save(url, "baidu.html", headers=headers, cookies=cookie_headers(cookies_load("百度登录Cookies.json")))

3)、效果:👇

可以看到成功的把登陆的页面返回并将其保存为了 html 文件,超链接基本上也还在

在这里插入图片描述
在这里插入图片描述
4)、结合之前Selenium百度模拟登录使用🎮

其实很简单,只是将之前代码部分修改即可,去掉了存储Cookies部分,有兴趣的可以自行添加尝试

这里使用cookies参数方式添加cookies数据

import time
import requests
from selenium import webdriver


class BaiduLogin:
    def __init__(self, url, executable_path):
        """
        对象初始化
        :param url: 百度首页地址
        :param executable_path: 浏览器驱动路径
        """
        self.url = url
        self.browser = self.start_browser(executable_path)

    @staticmethod
    def start_browser(executable_path):
        return webdriver.Edge(executable_path=executable_path)

    def start_url(self):
        self.browser.get(url)

    def find_by_xpath(self, xpath):
        return self.browser.find_element_by_xpath(xpath)

    def get_and_save(self, path, encoding="utf-8", **kwargs):
        """
        使用requests对网址发送请求,并将请求结果存储
        :param path: 存储文件路径
        :param encoding: 文件编码,默认utf-8
        """
        cookies = self.cookie_headers(self.browser.get_cookies())
        print(cookies)
        response = requests.get(self.url, cookies=cookies, **kwargs)
        if response.ok:
            response.encoding = encoding
            with open(path, "w", encoding=encoding) as f_w:
                f_w.write(response.text)

    @staticmethod
    def cookie_headers(cookies: list):
        """
        cookies 转化为字典函数
        :param cookies: selenium获取的cookies
        """
        dic = {}
        for i in cookies:
            dic[i["name"]] = i["value"]
        return dic

    def handle_login(self, username, pwd, isverify=False):
        """
        百度首页登录处理方法
        :param username: 用户名
        :param pwd: 用户密码
        :param isverify: 是否存在网页验证
        """
        # 点击右上角登录按钮
        self.find_by_xpath(r"//a[@id='s-top-loginbtn']").click()
        time.sleep(1)
        # 点击用户名登录按钮
        self.find_by_xpath(r"//p[@id='TANGRAM__PSP_11__footerULoginBtn']").click()
        # 向输入框输入账户名
        self.find_by_xpath(r"//input[@id='TANGRAM__PSP_11__userName']").send_keys(username)
        # 向输入框输入密码
        self.find_by_xpath(r"//input[@id='TANGRAM__PSP_11__password']").send_keys(pwd)
        # 点击登录按钮
        self.find_by_xpath(r"//input[@id='TANGRAM__PSP_11__submit']").click()
        # 手动图形验证等待
        input("请手动进行图形验证,完毕后输入任意内容继续运行")
        if isverify:
            time.sleep(1)
            # 点击发送验证码按钮
            self.find_by_xpath(r"//input[@id='TANGRAM__29__button_send_mobile']").click()
            # 等待用户输入手动验证码
            vcode = input("请输入六位数验证码:")
            self.find_by_xpath(r"//input[@id='TANGRAM__29__input_vcode']").send_keys(vcode)
            # 点击确定按钮
            self.find_by_xpath(r"//input[@id='TANGRAM__29__button_submit']").click()

    def quit(self):
        # 关闭浏览器
        self.browser.quit()

调用:👇

target_driver = "msedgedriver.exe"
url = r"https://www.baidu.com/"
headers = {
    "User-Agent": (r"请使用自己的"
                   r"UA识别码"),
}
login = BaiduLogin(url, target_driver)
login.start_url()
login.handle_login("用户名", "用户密码")
login.get_and_save("baidu.html", headers=headers)

六、获取的Cookies配合爬虫框架Scrapy使用💦

在这里插入代码片

参考资料💟


相关博客😏

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 12:01:04  更:2021-08-30 12:02:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 0:50:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计