Получить 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?
Я думал, что это обычные текстовые файлы...