Selenium: Почему мой метод get_cookies() вернул список в Python?

Ниже мой script:

# -*- 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}]
>>> 

Возврат - это список, но он должен быть словарем.

Ответ 1

Файлы 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)

Ответ 3

так как вы запросили все файлы cookie с помощью driver.get_cookies() он возвращает список словарей с парой (ключ, значение) для каждого сохраненного файла cookie. Если вместо этого вы заинтересованы в конкретном куки отождествляется с именем name вы можете запросить для этого конкретного печенья по имени с driver.get_cookie(name), который возвращает куки, если не найдены, None, если нет.

т.е.

driver.get_cookies() #returns list of cookie dictionaries
driver.get_cookie(name) # returns a cookie dictionary of specified cookie