Python模拟登陆古诗文网手动输入验证码显示验证码错误
import requests
from lxml import etree
session=requests.Session()
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36',}
url='https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
re=requests.get(url=url,headers=headers)
page_text=re.text
print(re.status_code)
print(page_text)
tree=etree.HTML(page_text)
code_image_src='https://so.gushiwen.cn'+tree.xpath('//*[@id="imgCode"]/@src')[0]
print(re.status_code)
#此处要用session请求验证码地址保存cookies后面输入验证码后才不会报错
img_data=session.get(url=code_image_src,headers=headers).contentwith open ('./code.jpg','wb',) as fp:fp.write(img_data)stri = input("请输入:")
login_url='https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'
data={
'__VIEWSTATE': '/vwC0eOzmbm46rBwBLdueaU67+W8RzMKuEHilr4oCRcLMYJcZqHUZEApf3/nuViOvwzPI2t2hArtxhP3wAGIJ6m+btN2s+2eHJ8MyRCZayIHrnAhyeqzn4JmyNQ=',
'__VIEWSTATEGENERATOR': 'C93BE1AE',
'from': 'http://so.gushiwen.cn/user/collect.aspx',
'email': '17xxxx66827',
'pwd': '2022waxxxxx.',
'code': stri,
'denglu': '登录'}
login_page_text=session.post(url=login_url,headers=headers,data=data).text
with open ('gushiwen.html','w',encoding='utf-8') as fp:fp.write(login_page_text)
获取验证码时需要保存cookie,输入验证码重新请求时才不会出现刷新验证码,验证码错误的情况,最终的网页源码保存在本地,以浏览器形式打开
验证码错误页面
登陆成功后的显示界面: