#接下来发表的是自动识别验证码模拟登陆的方式 --共勉
1.验证码识别,获取验证码数据
2.对post请求发送处理参数
import os
import requests
from lxml import html
import chaojiying as cjy
if name == ‘main’:
# 使用session 自动获取到cookie信息
session = requests.Session()
url = ‘https://so.gushiwen.cn/user/collect.aspx’
headers = {
‘User-Agent’: ‘User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11’
# ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36’
# ,‘cookie’: ‘login=true; ASP.NET_SessionId=13h0zxglotr21c5hlubxnkk4; Hm_lvt_9007fab6814e892d3020a64454da5a55=1621518001; login=true; gswZhanghao=15267107632; Hm_lpvt_9007fab6814e892d3020a64454da5a55=1621663635’
}
#
page = session.get(url=url,headers=headers).text
# print(page)
etree = html.etree.HTML(page)
# 实例化对象
path = etree.xpath("/html/body/form[1]/div[4]/div[4]/img/@src")[0]
# 拼接新的url 图片地址
url_n = 'https://so.gushiwen.cn'+path
# print(url_n)
# 识别图片地址
page_png = session.get(url_n).content
# 保存图片到本地 以便于自动识别
with open('./爬取的文件/code1.png','wb') as wrt:
wrt.write(page_png)
# 使用超级鹰自动识别验证码
cj = cjy.Chaojiying_Client('15267107632','bcrbcr123','917103')
im = open('./爬取的文件/code1.png','rb').read()
result = cj.PostPic(im,1004)
# 由于返回的是一个字典 所以取出来字典中对应的二维码值 如下个注释
rst = result['pic_str']
print(rst)
# tt = {'err_no': 0, 'err_str': 'OK', 'pic_id': '9141815506328500003', 'pic_str': 'm39c',
# 'md5': 'c417608f3f8568d11fac2daf2c16ee8b'}['pic_str']
# print(tt)
# 此种方式使用的人工的方式,便于没有超级鹰的同学手动输入验证码,哈哈哈
# rst = input("请手动输入验证码:")
url_login = 'https://so.gushiwen.cn/user/login.aspx'
data = {
'__VIEWSTATE':'CO4g754YVorx44Y82oCtATNp1lmAgOH//ETyGy//Tjgjr3stvG9n2EjDfL+TTZzxAUk2oePLv9vCUCd47dAuVwWt2rb+9leoR9fdyA/TVnbRjG1NiIp/f4UopKs=',
'__VIEWSTATEGENERATOR': 'C93BE1AE',
'from': 'http://so.gushiwen.cn/user/collect.aspx',
'email': '此处修改为你的账号',
'pwd': '修改为你的密码',
'code': str(rst),
'denglu': '登录'
}
response = session.post(url=url_login,data=data,headers=headers)
# 查看状态码值
print(response.status_code)
# 获取文本信息
page_tet = response.text
print(page_tet)
---- 有问题及时交流