【问题标题】:Problem loading cookies with selenium and python使用 selenium 和 python 加载 cookie 时出现问题
【发布时间】:2021-05-29 23:54:55
【问题描述】:

我正在尝试访问网页,将 cookie 保存到 csv 文件,然后稍后将 cookie 与 selenium 和 python 一起使用。目前,我可以很好地保存 cookie,但是当我稍后尝试使用该 cookie 时,我收到以下错误:

selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: missing 'cookie'
  (Session info: chrome=84.0.4147.89)

这是我保存 cookie 的代码:

from selenium import webdriver
import csv
outputdata = open('cookietest.csv', 'w', newline='')
outputWriter = csv.writer(outputdata)
driver=webdriver.Chrome()
driver.get("https://stackoverflow.com/")
cookies = driver.get_cookies()
print(cookies)
outputWriter.writerow([cookies])

这是我的代码,用于加载带有 cookies 的网页:

import csv
from selenium import webdriver
cookielist = open('cookietest.csv')
cookiereader = csv.reader(cookielist)
cookiedata = list(cookiereader)
curcookie = cookiedata[0][0]
driver=webdriver.Chrome()
driver.get("https://stackoverflow.com/")
driver.add_cookie(curcookie)

有人知道我做错了什么吗?

谢谢!

【问题讨论】:

    标签: python selenium cookies selenium-chromedriver


    【解决方案1】:

    cookie 数据是一个字典列表,因此 json 是首选文件格式。

    代码如下:

    from selenium import webdriver
    import json
    
    print('get cookie')
    
    driver=webdriver.Chrome()
    driver.get("https://stackoverflow.com/")
    cookies = driver.get_cookies()
    with open('cookietest.json', 'w', newline='') as outputdata:
        json.dump(cookies, outputdata)
    
    print('send cookie')
    
    import json
    from selenium import webdriver
    with open('cookietest.json', 'r', newline='') as inputdata:
        cookies = json.load(inputdata)
    curcookie = cookies[0]
    driver=webdriver.Chrome()
    driver.get("https://stackoverflow.com/")
    driver.add_cookie(curcookie)
    

    这是 cookie json 文件(格式化,截断)

    [
        {
            "domain": ".stackoverflow.com",
            "expiry": 1629684418,
            "httpOnly": false,
            "name": "__qca",
            "path": "/",
            "secure": false,
            "value": "P0-1270404352-1595815618103"
        },
        {
            "domain": ".stackoverflow.com",
            "expiry": 1595815677,
            "httpOnly": false,
            "name": "_gat",
            "path": "/",
            "secure": false,
            "value": "1"
        },
        .........
    ]
    

    【讨论】:

      猜你喜欢
      • 2016-11-15
      • 1970-01-01
      • 2017-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      相关资源
      最近更新 更多