Python爬虫遇到验证码的处理方式有哪些
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍"Python爬虫遇到验证码的处理方式有哪些",在日常操作中,相信很多人在Python爬虫遇到验证码的处理方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2025年01月19日Python爬虫遇到验证码的处理方式有哪些
这篇文章主要介绍"Python爬虫遇到验证码的处理方式有哪些",在日常操作中,相信很多人在Python爬虫遇到验证码的处理方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python爬虫遇到验证码的处理方式有哪些"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
封装源码:
学会调用百度的aip接口:
1. 首先需要注册一个账号:
https://login.bce.baidu.com/
注册完成之后登入
2. 创建项目
在这些技术里面找到文字识别,然后点击创建一下项目
创建完成之后:
图片中 AppID , API key, Secret Key 这些待会是需要用的。
下一步可以查看官网文档,或者直接使用我写的代码
3. 安装一下依赖库 pip install baidu-aip
这只是一个接口, 需要前面的一些设置。
def return_ocr_by_baidu(self, test_image): """ ps: 先在__init__ 函数中完成你自己的baidu_aip 的一些参数设置 这次测试使用 高精度版本测试 如果速度很慢 可以换回一般版本 self.client.basicGeneral(image, options) 相关参考网址: https://cloud.baidu.com/doc/OCR/s/3k3h7yeqa :param test_image: 待测试的文件名称 :return: 返回这个验证码的识别效果 如果错误 可以多次调用 """ image = self.return_image_content(test_image=self.return_path(test_image)) # 调用通用文字识别(高精度版) # self.client.basicAccurate(image) # 如果有可选参数 相关参数可以在上面的网址里面找到 options = {} options["detect_direction"] = "true" options["probability"] = "true" # 调用 result = self.client.basicAccurate(image, options) result_s = result['words_result'][0]['words'] # 不打印关闭 print(result_s) if result_s: return result_s.strip() else: raise Exception("The result is None , try it !")
扩展百度的色情识别接口:
我们写代码肯定是要找点乐子的, 不可能这么枯燥无味吧?
色情识别接口在 内容审核中, 找一下就可以了。
调用方式源码:
# -*- coding : utf-8 -*- # @Time : 2020/10/22 17:30 # @author : 沙漏在下雨 # @Software : PyCharm # @CSDN : https://me.csdn.net/qq_45906219 from aip import AipContentCensor from ocr import MyOrc class Auditing(MyOrc): """ 这是一个调用百度内容审核的aip接口 主要用来审核一些色情 反恐 恶心 之类的东西 网址: https://ai.baidu.com/ai-doc/ANTIPORN/tk3h7xgkn """ def __init__(self): # super().__init__() APP_ID = '填写你的ID' API_KEY = '填写你的KEY' SECRET_KEY = '填写你的SECRET_KEY' self.client = AipContentCensor(APP_ID, API_KEY, SECRET_KEY) def return_path(self, test_image): return super().return_path(test_image) def return_image_content(self, test_image): return super().return_image_content(test_image) def return_Content_by_baidu_of_image(self, test_image, mode=0): """ 继承ocr中的一些方法, 因为都是放一起的 少些一点代码 内容审核: 关于图片中是否存在一些非法不良信息 内容审核还可以实现文本审核 我觉得有点鸡肋 就没一起封装进去 url: https://ai.baidu.com/ai-doc/ANTIPORN/Wk3h7xg56 :param test_image: 待测试的图片 可以本地文件 也可以网址 :param mode: 默认 = 0 表示 识别的本地文件 mode = 1 表示识别的图片网址连接 :return: 返回识别结果 """ if mode == 0: filepath = self.return_image_content(self.return_path(test_image=test_image)) elif mode == 1: filepath = test_image else: raise Exception("The mode is 0 or 1 but your mode is ", mode) # 调用色情识别接口 result = self.client.imageCensorUserDefined(filepath) # """ 如果图片是url调用如下 """ # result = self.client.imageCensorUserDefined('http://www.example.com/image.jpg') print(result) return result a = Auditing() a.return_Content_by_baidu_of_image("test_image/2.jpg", mode=0)
学会muggle_ocr 识别接口:
这个包是最近火起来的, 使用起来很简单, 没多少其他函数
安装 pip install muggle-ocr 这个下载有点慢 最好使用手机热点 目前镜像网站(清华/阿里) 还没有更新到这个包 因为这个包是最新的一个ocr模型 12
调用接口
def return_ocr_by_muggle(self, test_image, mode=1): """ 调用这个函数使用 muggle_ocr 来进行识别 :param test_image 待测试的文件名称 最好绝对路径 :param 模型 mode = 0 即 ModelType.OCR 表示识别普通印刷文本 当 mode = 1 默认 即 ModelType.Captcha 表示识别4-6位简单英输验证码 官方网站: https://pypi.org/project/muggle-ocr/ :return: 返回这个验证码的识别结果 如果错误 可以多次调用 """ # 确定识别物品 if mode == 1: sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha) elif mode == 0: sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR) else: raise Exception("The mode is 0 or 1 , but your mode == ", mode) filepath = self.return_path(test_image=test_image) with open(filepath, 'rb') as fr: captcha_bytes = fr.read() result = sdk.predict(image_bytes=captcha_bytes) # 不打印关闭 print(result) return result.strip()
封装源码:
# -*- coding : utf-8 -*- # @Time : 2020/10/22 14:12 # @author : 沙漏在下雨 # @Software : PyCharm # @CSDN : https://me.csdn.net/qq_45906219 import muggle_ocr import os from aip import AipOcr """ PS: 这个作用主要是作了一个封装 把2个常用的图片/验证码识别方式合在一起 怎么用 取决于自己 接口1: muggle_ocr pip install muggle-ocr 这个下载有点慢 最好使用手机热点 目前镜像网站(清华/阿里) 还没有更新到这个包 因为这个包是最新的一个ocr模型 接口2: baidu-aip pip install baidu-aip 这个知道的人应该很多很多, 但是我觉得还是muggle 这个新包猛的一比 调用方式 可以参考官网文档: https://cloud.baidu.com/doc/OCR/index.html 或者使用我如下的方式 都是ok的 :param image_path 待识别的图片路径 如果目录很深 推荐使用绝对路径 """ class MyOrc: def __init__(self): # 设置一些必要信息 使用自己百度aip的内容 APP_ID = '你的ID' API_KEY = '你的KEY' SECRET_KEY = '你的SECRET_KEY' self.client = AipOcr(APP_ID, API_KEY, SECRET_KEY) def return_path(self, test_image): """:return abs image_path""" # 确定路径 if os.path.isabs(test_image): filepath = test_image else: filepath = os.path.abspath(test_image) return filepath def return_image_content(self, test_image): """:return the image content """ with open(test_image, 'rb') as fr: return fr.read() def return_ocr_by_baidu(self, test_image): """ ps: 先在__init__ 函数中完成你自己的baidu_aip 的一些参数设置 这次测试使用 高精度版本测试 如果速度很慢 可以换回一般版本 self.client.basicGeneral(image, options) 相关参考网址: https://cloud.baidu.com/doc/OCR/s/3k3h7yeqa :param test_image: 待测试的文件名称 :return: 返回这个验证码的识别效果 如果错误 可以多次调用 """ image = self.return_image_content(test_image=self.return_path(test_image)) # 调用通用文字识别(高精度版) # self.client.basicAccurate(image) # 如果有可选参数 相关参数可以在上面的网址里面找到 options = {} options["detect_direction"] = "true" options["probability"] = "true" # 调用 result = self.client.basicAccurate(image, options) result_s = result['words_result'][0]['words'] # 不打印关闭 print(result_s) if result_s: return result_s.strip() else: raise Exception("The result is None , try it !") def return_ocr_by_muggle(self, test_image, mode=1): """ 调用这个函数使用 muggle_ocr 来进行识别 :param test_image 待测试的文件名称 最好绝对路径 :param 模型 mode = 0 即 ModelType.OCR 表示识别普通印刷文本 当 mode = 1 默认 即 ModelType.Captcha 表示识别4-6位简单英输验证码 官方网站: https://pypi.org/project/muggle-ocr/ :return: 返回这个验证码的识别结果 如果错误 可以多次调用 """ # 确定识别物品 if mode == 1: sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha) elif mode == 0: sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR) else: raise Exception("The mode is 0 or 1 , but your mode == ", mode) filepath = self.return_path(test_image=test_image) with open(filepath, 'rb') as fr: captcha_bytes = fr.read() result = sdk.predict(image_bytes=captcha_bytes) # 不打印关闭 print(result) return result.strip() # a = MyOrc() # a.return_ocr_by_baidu(test_image='test_image/digit_img_1.png')
到此,关于"Python爬虫遇到验证码的处理方式有哪些"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
验证
接口
测试
方式
图片
网址
参数
文件
内容
函数
网站
路径
爬虫
处理
名称
最好
模型
版本
色情
错误
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
厦门电路软件开发设计公司
广州微交易软件开发
战地1怎么玩私人服务器
sr服务器管理ip
计算机网络技术 谢昌荣
虚拟机查数据库版本
工业网络安全证
哈密网络技术哪家好
英语词汇分级软件开发
局域网web服务器ip设置
哪一个云服务器比较便宜
学java还是网络安全
软件开发人员会用吗
西安国研软件开发有限公司
服务器端口修改
南京计算机网络技术口碑推荐
达梦数据库安装问题
上海五际网络技术有限公司
市政设施普查数据库
jsp访问数据库实验报告册
软件开发项目人员架构
服务器python脚本查看编码
广东企业云空间功能服务器
网络服务器维修多少钱
数据库表删除字段值的语句
软件开发的三种基本结构
如何开展网络安全宣传周
连接hbase数据库
浙大vpn服务器
南康网络技术有限公司