python的pyppeteer遇到问题汇总

1、验证码识别

验证码识别主要分为两步:验证码图片截屏、图片OCR识别。因为OCR识别暂时无离线包,所以该功能使用互联网查询。
温馨提示:OCR识别接口网上很多,这里使用快识图片识别平台,每天有100的免费查询次数,具体使用方法可参考平台官方API文档

async def verification_code(page):
    YZM = await  page.querySelector('#img_path') # 验证码图片定位
    await YZM.screenshot({'path': 'yanzhengma.png'}) # 验证码插件截图保存
    code = get_code('yanzhengma.png') # 用OCR识别截图中的验证码
    return code



def get_code(file_path):
    # 获取token
    url = 'http://api.95man.com:8888/api/Http/UserTaken?user=username&pwd=password&isref=0'
    token_request = requests.get(url)
    token_raw = str(token_request.content)
    token = token_raw[4: -1] # 平台返回值结构可能会和API文档中描述不一致,需人工核验并切片获取
    print(token)
    # 发送图片解析请求
    url = "http://api.95man.com:8888/api/Http/Recog?Taken=" + token + "&imgtype=1&len=4"
    file_path = file_path
    files = {'file': open(file_path, 'rb')}
    # 上传图片
    r = requests.post(url, files=files)
    print(r.url, r.text)
    # 切片获取验证码
    return r.text[8:-2]

2、输入框内文本删除/覆盖

利用pyppeteer在模拟输入时,常用的时type函数,但在使用时发现它是增加在输入框(input组件)内,如果之前有文本,并不会覆盖,而是增加,若要删除已有文本,在查阅了很多文档后,并未找到可行的方法,包括利用js脚本修改输入框的值(本人js能力较弱,试验多次反正没成功),最后选择利用模拟键盘输入的方式先删除,在录入实现了文本覆盖。

async def delete_all(page):
	# 先执行Ctrl+A全选文本,再删除所选文本
    await page.keyboard.down('Control');
    await page.keyboard.press('KeyA');
    await page.keyboard.up('Control');
    await page.keyboard.press('Backspace');



if __name__=='__main__':
	await page.type('#input','', {'delay': input_time_random() - 50}) # 定位输入框文本
    await delete_all(page) # 删除输入库内所有文本
    await page.type('#input',text, {'delay': input_time_random()}) # 录入待输入的文本

温馨提示:keyboard中的Ctrl键在使用时,用Control,其余按键可网上自搜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值