''' 代码如下: 作者:junior #具体原因不太了解,我的情况是输出的stat_code输出的是200,然后一直报验证码错误, # 总结一下验证码错误的解决办法,把代码中所有的requests全部换成session就行了 ''' from lxml import html # 获取相应数据 import requests from hashlib import md5 from chaojiying import Chaojiying_Client headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ' '(KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36' } # 指定URL url_yuanlai = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx' # 发起post请求 session = requests.session() res = session.get(url=url_yuanlai, headers=headers).text # 针对得到的反馈信息爬去验证码图片 # 爬去图片的地址(完成拼接) # 保存到本地 tree = html.etree.HTML(res) res = tree.xpath('//*[@id="imgCode"]/@src')[0] res = 'https://so.gushiwen.cn' + res # 对图片的地址发出get请求,下载验证码图片 url_code = res res = session.get(url=url_code, headers=headers).content # 图片格式使用content with open('code.jpg', 'wb')as fp: # 图片的需要wb fp.write(res) # 使用超级鹰识别图片: # 输入的参数:用户名,密码,id chaojiying = Chaojiying_Client('15897672651', 'li996610', '922060') # 用户中心>>软件ID 生成一个替换 96001 # 读取下载的验证码文件,通过二进制 im = open('code.jpg', 'rb').read() # 1902,超级鹰上面可以查,4位的英文 print(chaojiying.PostPic(im, 1004)['pic_str'].upper()) a=chaojiying.PostPic(im, 1004)['pic_str'].upper() # 登录模块 url_login = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx' data = { '__VIEWSTATE': 'POd5qQ4sV3/DJXT0/DqQSz/LaMwlhp8DS91zI/tHq2tC9BkO5jN6qukCL0iOlNi+6sCnwFMmhk0XjXSemrGKD72Kl8W0UqXCah5vZaoW4O1UUjriuWHxheRp4fw=', '__VIEWSTATEGENERATOR': 'C93BE1AE', 'from': 'http://so.gushiwen.cn/user/collect.aspx', 'email': '账号', 'pwd': '密码', 'code': a, 'denglu': '登录' } respone = session.post(url=url_login, headers=headers, data=data) print(respone.status_code, '登录成功') res=respone.text with open('古诗文.html', 'w', encoding='utf-8') as fp: fp.write(res) # 信息提取 url = 'https://so.gushiwen.cn/user/collect.aspx' res = session.get(url=url, headers=headers).text with open('古诗文内部.html', 'w', encoding='utf-8') as fp: fp.write(res)
使用超级鹰模拟登录验证码报错的解决办法
最新推荐文章于 2023-06-03 20:09:54 发布