Selenium:为什么我的get_cookies()方法在Python中返回一个列表?

问题描述 投票:9回答:3

以下是我的脚本:

# -*- coding: UTF-8 -*-
from selenium import webdriver

driver = webdriver.Firefox()

driver.get("http://www.google.com")

all_cookies = driver.get_cookies()

print all_cookies

打印结果是:

>>> 
[{u'domain': u'.google.com.hk', u'name': u'PREF', u'value': u'ID=999c3b8cf82fb5bc:U=7d4d0968915e2147:FF=2:LD=zh-CN:NW=1:TM=1341066316:LM=1341066316:S=kDqT8587qbZJj1_B', u'expiry': 1404138316, u'path': u'/', u'secure': False}, {u'domain': u'.google.com.hk', u'name': u'NID', u'value': u'61=AbRSUZokdEP3hN79nLdNOWwlF7itUX9-pmFAIBb-ysJqvoi1NBsmOa2wV7ldWgXpYBd_OsPnMxaAPiRsJyCpVbCN882MWNn6DwNm9eD6PTKU2gfDfqrj2EJr6CNVUhI6', u'expiry': 1356877516, u'path': u'/', u'secure': False}]
>>> 

返回是一个列表,但它应该是一个字典。

python selenium-webdriver
3个回答
14
投票

Cookie包含的信息多于简单的名称和值信息,例如到期日期,域名等。因此,简单的键/值对是不够的。如果您只对名称及其对应的值感兴趣,那么我将执行类似于以下内容的操作来构建您自己的字典:

# -*- coding: UTF-8 -*-
from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.google.com")
cookies_list = driver.get_cookies()
cookies_dict = {}
for cookie in cookies_list:
    cookies_dict[cookie['name']] = cookie['value']

print(cookies_dict)

4
投票

据我所知,get_cookies()返回一个字典列表,每个字典都包含找到的每个cookie的属性:

http://selenium-python.readthedocs.io/navigating.html#cookies


1
投票

因为你要求使用driver.get_cookies()的所有cookie,它会为每个存储的cookie返回一个带有(key,value)对的字典列表。如果您对使用名称name标识的特定cookie感兴趣,则可以使用driver.get_cookie(name)按名称请求该特定cookie。如果找到则返回cookie,否则返回None。

driver.get_cookies() #returns list of cookie dictionaries
driver.get_cookie(name) # returns a cookie dictionary
© www.soinside.com 2019 - 2024. All rights reserved.