我想获得响应中携带的Cookie(Set-Cookie: name=value; ...
)。
传递info常量和空列表的引用时:
set_cookies = []
c.getinfo(c.COOKIELIST, set_cookies)
我收到以下错误:
TypeError: c.getinfo() takes exactly 1 argument (2 given)
这很简单。
我也试过这个签名:
set_cookies = c.getinfo(c.COOKIELIST)
我收到此错误:
ValueError: invalid argument to getinfo
然而,这有点模糊。
使用getinfo()
获取HTTP状态代码可以正常工作。
我当然得到200 OK
和Set-Cookie
标题(使用c.setopt(pycurl.VERBOSE, 1)
进行调试)。
我当然读过
除极少数例外情况外,PycURL常量是通过删除CURLINFO_前缀从libcurl常量派生的。
也许这是例外?
在我看来,文档很差,并且不包含任何有关使用Set-Cookie
发送Cookie的信息。
参考文献:
答案 0 :(得分:3)
调用perform()
后,无法获得响应Cookie。在使用setopt()
进行配置时,可以使用传递给PyCurl实例的回调函数捕获服务器发送的标头:
CURLOPT_HEADERFUNCTION
Callback for writing received headers. See CURLOPT_HEADERFUNCTION
示例代码摘录:
set_cookies = []
# closure to capture Set-Cookie
def _write_header(header):
match = re.match("^Set-Cookie: (.*)$", header)
if match:
set_cookies.append(match.group(1))
# use closure to collect cookies sent from the server
c.setopt(pycurl.HEADERFUNCTION, _write_header)
参考文献: