我知道我可以在cookiejar中遍历cookie,这样我就可以找到一个具有特定名称的cookie - 但CookieJar对象本身是否有任何我可以通过名称获取某个cookie的方法?
它只是让我不得不编写一个已经存在的辅助方法。
答案 0 :(得分:22)
是的,__iter__
方法将遍历CookieJar
中的每个Cookie。
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
。因此,单独提供名称不足以在CookieJar
中找到适用cookie的值。
虽然__iter__
方法会轻松返回cookie
个对象的列表,例如list(cj)
,但CookieJar
的内部结构并不是一个简单的列表。关于CookieJar
课程的内部成员是here。
答案 1 :(得分:9)
您还可以使用dict_from_cookiejar,它从CookieJar返回键/值字典。类似的东西:
var column = new GridViewColumn { Header = "" };
var customTemplate = new System.Windows.DataTemplate();
var efImage = new FrameworkElementFactory(typeof(Image));
efImage.SetBinding(Image.SourceProperty, new Binding("Icon"));
customTemplate.VisualTree = efImage;
column.CellTemplate = customTemplate;
view.Columns.Add(column);
然后按键访问您的Cookie值。
答案 2 :(得分:5)
它没有文档内部,但你可以像这样直接访问cookie:cookiejar._cookies[domain][path][name]
答案 3 :(得分:1)
cookielib.CookieJar?
你可以将jar转换为一个列表并处理它,例如{i.name: i for i in list(j)}
和btw,j._cookies实际上已经是一个字典 - 虽然没有完全简单地编入索引。
cookie jar文件?
我认为那些是纯文本文件......
答案 4 :(得分:0)
将Cookie Cookie与Cookie模块混合
public class AppState: INotifyPropertyChanged
{
private static Operation _activeTask;
private static AppState _instance;
public static AppState Instance
{
get => _instance ?? (_instance = new AppState());
}
public Operation ActiveTask
{
get => _activeTask;
set
{
if (value != _activeTask)
{
_activeTask = value;
RaisePropertyChanged("ResourceName");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string prop)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
public string ResourceName => ActiveTask?.Operacija?.acResursName.Trim() ?? "";
}
}
如果const { parse } = require("cookie");
// uri eg: http://localhost
const cookies = parse( cookieJar.getCookieString(uri) );
const cookieValue = cookies["cookie-name"];
不带uri
前缀,它将不会从jar获取cookie