|
20鱼币
今天在模拟登录古诗文网的时候遇到一个问题,爬取到的页面一直显示验证码错误。
验证码我是使用的图鉴来识别的,经过我检查以后是没有错误的,有没有大佬知道怎么回事。
下面是源码(用*******覆盖的部分是涉及个人信息的)
import requests
from lxml import etree
from 图鉴识别验证码 import base64_api
# 登录页面的url
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0"
}
full_text = requests.get(url="https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx", headers=headers).text
tree = etree.HTML(full_text)
# 获取变化的登录请求值
__VIEWSTATE = tree.xpath('//input[@id="__VIEWSTATE"]/@value')[0]
__VIEWSTATEGENERATOR = tree.xpath('//input[@id="__VIEWSTATEGENERATOR"]/@value')[0]
#获取验证码图片的url
src = tree.xpath('//*[@id="imgCode"]/@src')[0]
#拼接url以后将验证码图片保存到本地
image_url = 'https://so.gushiwen.cn/' + src
image_data = requests.get(url=image_url, headers=headers).content
with open("./code.jpg", "wb") as fp:
fp.write(image_data)
# 使用图鉴(一个验证码识别网站)识别验证码
result = base64_api(uname='*********', pwd='*********', img="./code.jpg", typeid=1003)
#发送请求
session = requests.session()
data = {
'__VIEWSTATE': __VIEWSTATE,
'__VIEWSTATEGENERATOR': __VIEWSTATEGENERATOR,
'from': 'http',
'email': '***************',
'pwd': '****************',
'code': result,
'denglu': '登录'
}
response_text = session.post(url="https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx", headers=headers, data=data).text
print(response_text)
求助
session会自动记录cookie,让服务器看我们是“同一个”会话。
|
最佳答案
查看完整内容
session会自动记录cookie,让服务器看我们是“同一个”会话。
|