java的selenium爬虫验证码orc识别

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.调整截取位置:如果无法完全避免偏差,你可以尝试手动调整截取的位置,将其向左、向右、向上或向下移动一定的像素,直到截取的图片与验证码元素对齐。

自己慢慢调了位置

java的selenium爬虫验证码识别-CSDN博客

//元素坐标
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识别这种验证码会少几个字母,还是用不了,只能用于一些简单的验证码

新手小白,刚上班一星期,寥寥草草记录一下自己做的第一个新功能

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值