来源:python中国网 时间:2020-03-11

  我们都知道数据库需要增删改查操作,其实任何事物都一样我们操作它无外乎增删改查!cookie也是一样。selenium提供了操作cookie的方法如下:

  get_cookies(): 获得所有cookie信息。

  get_cookie(name): 获得字典的key为“name”的cookie信息。

  delete_all_cookies(): 删除所有cookie信息。

  delete_cookie(name):删除特定key为name的cookie信息

  add_cookie(cookie_dict) : 添加cookie。cookie_dict为字典对象(这里有个坑!cookie_dict的格式并不是{'k1':'v1'},而是{'name':'k1','value':'v2'})详情查看selenium报错Message: invalid cookie domain

  此外在配置的时候还可以从本地读取cookie

  options.add_argument("user-data-dir=C:/Users/dong/AppData/Local/Google/Chrome/User Data")

  上面的路径填写Chrome浏览器保存Cookies的路径。

  下面我们以百度贴吧为例子来演示下自动登录,只是采用一种稍微麻烦点的方式:

  1、先用浏览器登陆贴吧然后复制cookie出来

  2、在程序里面携带上这个cookie访问贴吧

  3、打印用户名(如果登陆成功肯定有用户名,未登录状态是没有用户名的)

# -*- coding: utf-8 -*-

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options


def get_cookie(cookie_str):
    lists = cookie_str.split(';')
    cookie = {}
    for i in lists:
        j = i.strip()
        j = j.split('=')
        cookie[j[0]] = j[1]
    return cookie


def main(tieba_url,cookie_dict):
    driver.get(tieba_url)
    for k, v in cookie_dict.items():
        driver.add_cookie({'name': k, 'value': v})
    driver.get(tieba_url)
    my_name = WebDriverWait(driver, 30).until(
        EC.visibility_of_element_located((By.CLASS_NAME, "u_username_title"))
    )
    print(my_name.text)


if __name__ == "__main__":
    # 换成你登录贴吧后从浏览器复制的cookie
    cookie_str = 'xxxx'
    option = Options()
    option.add_argument('--disable-gpu')
    option.binary_location = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"  # 安装的位置
    driver = webdriver.Chrome(options=option)
    tieba_url = 'https://tieba.baidu.com/'
    cookie_dict = get_cookie(cookie_str)
    main(tieba_url,cookie_dict)

  记得把cookie字符串换成你真实登录后的cookie,运行程序,你将会看到自己百度贴吧的用户名

每篇文章旨在解决一个问题,有帮助,赏瓶水。

selenium教程

Tips:不要怕、多坚持、多动手、付出必有回报。