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

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

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

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 класс здесь.


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

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

и затем получить доступ к значению cookie по ключу.


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


cookielib.CookieJar?

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

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

файл cookie jar?

Я думал, что это обычные текстовые файлы...