Важным моментом здесь является то, что метод cj.set_cookie
ожидает объект класса cookielib.Cookie
в качестве его параметра (поэтому да, есть другой класс Cookie ), не объект класса Cookie.SimpleCookie
(или любого другого класса, найденного в модуле Cookie
). Эти классы (как отмечено) просто не совместимы, несмотря на запутанное сходство имен.
Обратите внимание, что список параметров конструктора для cookielib.Cookie
мог измениться в некоторый момент в прошлом (и может измениться в будущем, так как этот класс, по-видимому, не будет использоваться за пределами cookielib
) по крайней мере help(cookielib.Cookie)
в настоящее время дает мне
# Cookie(version, name, value, port, port_specified, domain,
# domain_specified, domain_initial_dot, path, path_specified,
# secure, expires, discard, comment, comment_url, rest, rfc2109=False)
Обратите внимание на дополнительный параметр expires
и параметр rfc2109
, используемые, но не документированные в коде в ответе @ Michael выше, поэтому пример должен выглядеть примерно так:
c = Cookie(None, 'asdf', None, '80', True, 'www.foo.bar',
True, False, '/', True, False, '1370002304', False, 'TestCookie', None, None, False)
(также заменяет некоторые логические константы на None
, где это применимо).