Rumah > Soal Jawab > teks badan
以下是获取cookies的一段代码,运行时是没有问题的。
r = await session.post(url, data=postData)
if r.status == 200:
print ("Get Cookie Success!( Account:%s )" % account)
cookie = r.cookies
print (cookie)
cookies.append(cookie)
else:
pass
# 释放连接
await r.release()
下图上边的红色框是上边代码的输出,如果程序中有bug,不管有什么bug时都会自动打印图中下边红色框的信息,上下两个红框中的cookies为什么不一样?post的url只有一个且返回的都是200。网上找了很久也找不到答案,望指教,谢谢!
怪我咯2017-04-18 10:27:00
Selepas membaca kod sumber dan mencari masalah langkah demi langkah, masalah ditemui Output kotak merah pertama ialah ClientResponse.cookies
, dan kotak merah kedua ialah output dalam ClientResponse.__del__
selepas beberapa panggilan masuk ClientResponse.__repr__
. apabila ralat berlaku. ClientResponse.headers
dan
diekstrak daripada cookies
, dan kaedah yang digunakan ialah headers
Akhirnya, didapati kaedah http.cookies.SimpleCookie.load
dalam BaseCookie
mempunyai masalah apabila menggunakan padanan ungkapan biasa. Ungkapan biasa adalah seperti berikut: __parse_string
_CookiePattern = re.compile(r"""
\s* # Optional whitespace at start of cookie
(?P<key> # Start of group 'key'
[""" + _LegalKeyChars + r"""]+? # Any word of at least one letter
) # End of group 'key'
( # Optional group: there may not be a value.
\s*=\s* # Equal Sign
(?P<val> # Start of group 'val'
"(?:[^\"]|\.)*" # Any doublequoted string
| # or
\w{3},\s[\w\d\s-]{9,11}\s[\d:]{8}\sGMT # Special case for "expires" attr
| # or
[""" + _LegalValueChars + r"""]* # Any word or empty string
) # End of group 'val'
)? # End of optional value group
\s* # Any number of spaces.
(\s+|;|$) # Ending either at space, semicolon, or EOS.
""", re.ASCII | re.VERBOSE) # re.ASCII may be removed if safe.
Apabila dipadankan dengan , expires=Saturday, 06-Mar-2027 02:32:46 GMT;
yang diperoleh buat kali pertama ialah key
, dan expires
ialah val
Saturday,
yang diperoleh untuk kali kedua ialah key
, dan 06-Mar-2027
ialah val
adalah None
dalam fungsi Kerana return
tidak boleh ditafsirkan dengan betul, maklumat kuki expires
dan cookies
adalah berbeza. headers