Получить cookie из CookieJar по имени

Я знаю, что могу перебирать файлы cookie в cookiejar, и это позволило бы мне найти файл cookie с определенным именем, но есть ли у самого объекта CookieJar какие-либо методы, которые я могу вызвать для получения определенного файла cookie по имени?

Это просто избавляет меня от необходимости писать уже существующий вспомогательный метод.


person Matt    schedule 17.11.2011    source источник
comment
Не то, чтобы я мог видеть, нет. Вы можете создать функцию или создать подкласс объекта CookieJar, но я не уверен, почему не существует метода.   -  person Blender    schedule 18.11.2011


Ответы (4)


Да, метод __iter__ будет проходить через каждый файл cookie в CookieJar.

for cookie in cj:
   print cookie.name, cookie.value, cookie.domain #etc etc

Файл cookie - это не просто пара имени и значения. В его длинном списке (17) свойств есть domain и path. Например, значение домена .ibm.com применимо к веб-сайту mail.ibm.com. Значение домена ibm.com и значение пути /abc не будут применяться к веб-странице ibm.com/index.htm. Таким образом, одного только имени недостаточно, чтобы найти значение применимого файла cookie в CookieJar.

Хотя метод __iter__ легко возвращает список объектов cookie, например list(cj), внутренняя структура CookieJar не является простым списком. Внутренняя информация о классе CookieJar находится здесь.

person Old Geezer    schedule 17.12.2014

Вы также можете использовать dict_from_cookiejar, который возвращает ключ / value словарь из CookieJar. Что-то вроде:

my_cookies = requests.utils.dict_from_cookiejar(s.cookies)

а затем получить доступ к значению вашего файла cookie по ключу.

person coda    schedule 03.06.2015

Это недокументированное внутреннее устройство, но вы можете получить доступ к файлам cookie напрямую следующим образом: cookiejar._cookies[domain][path][name]

person David K. Hess    schedule 03.04.2016

cookielib.CookieJar?

вы можете преобразовать jar в список и обработать его, например {i.name: i for i in list(j)}

и, кстати, j._cookies на самом деле уже является dict-dict, хотя и не полностью проиндексирован тривиально.

файл cookie jar?

Я думал, это простые текстовые файлы ...

person Dima Tisnek    schedule 08.10.2012