我正在使用基于此答案的以下代码将身份验证 cookie 存储在文件中。这使我可以避免每次运行程序时都必须登录。
现在,从常规 Session cookie 中获取csrftoken效果很好,但是当我尝试使用 cookiejar 从 cookiejar 中获取它时csrf = s.cookies['csrftoken']
,我得到了
AttributeError: LWPCookieJar instance has no attribute '__getitem__'`
我知道发生这种情况是因为我将 s.cookies 视为一个列表,即使它现在是一个 LWPCookieJar 对象。我想这给我留下了两个选择:
任何一个:
- 从
LWPCookieJar
对象中提取列表,然后获取 csrf 令牌很容易。 - 或者,找到适当的语法以直接从
LWPCookieJar
.
我怎样才能做到这一点?
import os
import requests
from cookielib import LWPCookieJar
s = requests.Session()
s.cookies = LWPCookieJar('cookiejar')
if os.path.exists('cookiejar'):
# Load saved cookies from the file and use them in a request
print('loading saved cookies')
s.cookies.load()
else:
# Create a new cookies file and set our Session's cookies
print('saving cookies')
s.cookies.save()
r = s.get('http://httpbin.org/cookies')
print(r.text)
# Save the session's cookies back to the file
s.cookies.save()