#下载验证码到本地import requestsfrom lxml import etreeimport urllib.requests = requests.session()url = 'https://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx'headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}page_content = s.get(url,headers=headers).texttree = etree.HTML(page_content)img_url = tree.xpath('//img[@id="imgCode"]/@src')[0]img_url = 'https://so.gushiwen.org' + img_url#urllib.request.urlretrieve(img_url,'./code.png')img_data = s.get(url=img_url,headers=headers).contentwith open('./code.png','wb') as fp: fp.write(img_data) #解析form表单的令牌数据(反爬手段)key_1 = tree.xpath('//*[@id="__VIEWSTATE"]/@value')[0]key_2 = tree.xpath('//*[@id="__VIEWSTATEGENERATOR"]/@value')[0]#step 2:抓包获取登录urlcode = input('查看下验证码内容:')post_url = 'https://so.gushiwen.org/user/login.aspx?from=http%3a%2f%2fso.gushiwen.org%2fuser%2fcollect.aspx'data = { "__VIEWSTATE":key_1, "__VIEWSTATEGENERATOR":key_2, "from":"http://so.gushiwen.org/user/collect.aspx", "email":"www.zhangbowudi@qq.com", "pwd":"123456", "code":code, "denglu":"登录"}page_content = s.post(url=post_url,headers=headers,data=data).textwith open('./second.html','w',encoding='utf-8') as fp: fp.write(page_content)print('over')