selenium+百度OCR完成登录验证码文字识别并且完成模拟登录操作并获取cookie_selenium登录立可得后台,并使用百度ocr识别-CSDN博客
根据这个大佬的步骤一步步做下来,也注册了百度ocr。遇到了几个问题
一,返回的idea报了No permission to access data的错,后来去csnd找了测试接口的方法。重新在ocr那里调试
百度智能云“文章标题”生成接口返回:没有访问数据的权限No permission to access data-CSDN博客
二,用了大佬的截图验证码时,明明验证码的xpath没有错,但老是会有偏移,导致截取的图片不对,后来查了gpt,给了以下建议
ChatGPT
使用Selenium的getLocation()方法可能会导致截取位置有偏差,因为该方法返回的是元素相对于页面左上角的坐标,而验证码可能会动态变化位置,导致偏差。为了解决这个问题,你可以尝试以下几种方法:
1.使用更准确的定位方式:尽量使用更准确的定位方式来定位验证码元素,例如通过XPath、CSS选择器等,以确保准确地定位到验证码元素。
2.使用元素大小进行截取:获取验证码元素的大小,并根据大小来计算截取的位置,而不是依赖于元素
的坐标。这样可以确保截取的位置始终与验证码元素对齐。
3.等待验证码加载完成:在进行截图之前,等待验证码元素完全加载并可见,以确保截取的位置准确。
4.调整截取位置:如果无法完全避免偏差,你可以尝试手动调整截取的位置,将其向左、向右、向上或向下移动一定的像素,直到截取的图片与验证码元素对齐。
自己慢慢调了位置
//元素坐标 BufferedImage img = image.getSubimage(980,340,250,100); ImageIO.write(img, "png", screen);
三、通过识别后返回的result我是自己分割了,大佬那个在我这边报错了
String[] split = result.split(":"); System.out.println(split[2]); String[] split1 = split[2].split(","); System.out.println(split1[0]); String str = split1[0].substring(1, split1[0].length() - 1); result=str;
最后最后,orc识别这种验证码会少几个字母,还是用不了,只能用于一些简单的验证码
新手小白,刚上班一星期,寥寥草草记录一下自己做的第一个新功能