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)
Ответ 2
Я понимаю, что get_cookies()
возвращает список словарей, каждый из которых содержит свойства для каждого найденного файла cookie:
http://selenium-python.readthedocs.io/navigating.html#cookies
Ответ 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