cookie的调用涉及到局部变量和全局变量的使用
最开始,在函数最外面设置了一个全局的空变量cookie="",然后在其他要调用的函数area()里面的请求中直接使用cookie变量;
不过发现登录函数set_cookie(),里面的变量cookie是局域变量,导致area()函数调用不到;
解决办法是在登录函数里声明全局变量global,然后在其他函数就可以调用到了
def set_cookie():
# 声明全局变量 cookies
global cookies
rea_data = 'userName=gaoxing&password=123123'
req_log = requests.post(log_url, data=rea_data, headers=heads, verify=False)
cookies = req_log.cookies.get_dict()
return cookies
def area(account, userid):
keyword = 'keyword=' + account
# 该函数就可以直接使用到全局变量cookies了
res = requests.post(area_url, keyword, cookies=cookies, headers=heads, verify=False)
htm = res.json()['view']
bs = BeautifulSoup(htm, 'html.parser')
x = bs.find('tr', data=userid)
dic["所在区"] = x.find('td', attrs='tdAlignCenter areaId').text