python异步中aiohttp获取不到正确的Set-cookies值
这几天学习了python的异步请求,想修改之前写的代码提高请求效率,但遇到一个包含set-cookie返回的请求无法获取正确的cookie值
原程序关键代码(单线程)(重点看print()输出内容):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | def enter_study(num, course): # 进入每个课群的每个课程记录每个章节url global lesson_url # 章节 header['Referer'] = re.search(r'http.*?course', qun_course_url[num][course]).group() + 's' print(session.cookies) # 打印当前网站的cookies print('\n\n\n') while True: try: request = session.get(qun_course_url[num][course], headers=header, timeout=3) # 进入课程 print(request.cookies) print(session.cookies) # 打印当前网站的cookies input() break except Exception as e: print('进入课程学习重试中。。。') continue update_time(1) update_time(2) temp_list = [] for x in re.findall(r'/courses/YOOC\S*/">', request.text): temp_list.append('https://xueyuan.yooc.me' + x[:-2]) # 该课程有多少章节 lesson_url[num][course] = temp_list |
运行结果(cookies中间空白处因为涉及用户信息所以屏蔽了):

修改后的出现问题的代码(异步)(重点看print()输出内容):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | async def enter_study(num, course, header): # 进入每个课群的每个课程记录每个章节url async with aiohttp.ClientSession(cookies=cookie) as session: header['Referer'] = re.search(r'http.*?course', qun_data[num][2][course]).group() + 's' #打印请求前的cookie记录 print(session.cookie_jar.filter_cookies()) async with session.get(qun_data[num][2][course], headers=header) as html: # 进入课程 update_time(1) update_time(2) print('\n\n') print(html.cookies)#打印Set-cookie信息 print() #打印请求后的cookie记录 print(print(session.cookie_jar.filter_cookies())) if str(html.cookies).find('Set-Cookie') > -1: save_cookie_record['Set-Cookie'] = html.cookies rep_text = await html.text(encoding='utf-8') temp_list = [] for x in re.findall(r'/courses/YOOC\S*/">', rep_text): temp_list.append('https://xueyuan.yooc.me' + x[:-2]) # 该课程有多少章节 qun_data[num][2][course] = temp_list |
运行结果(请求后返回的set-cookies信息没有更新):

该程序是用一个cookie字典来保存cookie值的,需要通过请求后的set-cookie值来更新我的cookie字典,为什么用在异步请求上却不行呢?