最近事情其实挺多了,打了一下蓝桥杯的比赛, 还在准备着一些证书的考试, 关于爬虫之类的博客都搁着了一段时间了, 关于我自己确实有点退步了, 实属不该, 其实我自己也是在想, 大三了,到底我是要去考研,还是依然像这样更新换代的学技术, 再或者, 继续钻爬虫这路子, 虽然我也不知道这路走的顺不顺, 自己也有点抓不住光明, 这段时间,大概花了一个多月的晚上吧, 终于把Django 的大致过了一次, 剩下的就是对着官方文档和一些实际项目操作了, 这些我也会打算开一个专栏,来专门记录一下我学习Django 的一些心酸道路, 学习依旧是这样, 你不学习,就会失去, 很是莫名其妙, 真的很奇怪, 某人的奖学金是靠关系的, 某项目的获奖者仅仅只是临时换了一个名字,。。。

不管这些了,无所谓的东西, 这边博客,将处理图片验证码的2个比较优秀的方式进行了一次封装, 分别是百度的aip 和 一个最近火起来的识别muggle-ocr

这里要主要提一下百度的aip,这里面的东西是真的多, 我还扩展了一个识别色情图片的函数, 有兴趣的可以玩一玩, 另外 学了爬虫之后, 这些图片真的是应接不暇, 网站也是多的数不胜数, 希望净网行动加把劲, 剩下的就不比比了, 看实际操作吧。

本篇文章介绍了爬虫中验证码的处理方式, 并把这些功能封装起来,供我们使用, 涉及到百度AIP的调用方式, 以及一个最新的开源库muggle识别库的使用。

目录:

学会调用百度的aip接口:

扩展百度的色情识别接口:

学会muggle_ocr 识别接口:

封装源码:

学会调用百度的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:

returnresult_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

fromaip import AipContentCensor

fromocr import MyOrc

class Auditing(MyOrc):

"""

这是一个调用百度内容审核的aip接口

主要用来审核一些色情 反恐 恶心 之类的东西

网址: https://ai.baidu.com/ai-doc/ANTIPORN/tk3h6xgkn

"""

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):

returnsuper().return_path(test_image)

def return_image_content(self, test_image):

returnsuper().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/Wk3h6xg56

: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)

returnresult

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)

withopen(filepath,'rb')asfr:

captcha_bytes = fr.read()

result = sdk.predict(image_bytes=captcha_bytes)

# 不打印关闭

print(result)

returnresult.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

fromaip 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)

returnfilepath

def return_image_content(self, test_image):

""":return the image content """

withopen(test_image,'rb')asfr:

returnfr.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:

returnresult_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)

withopen(filepath,'rb')asfr:

captcha_bytes = fr.read()

result = sdk.predict(image_bytes=captcha_bytes)

# 不打印关闭

print(result)

returnresult.strip()

# a = MyOrc()

# a.return_ocr_by_baidu(test_image='test_image/digit_img_1.png')

python爬虫源码附注解_Python爬虫遇到验证码的几种处理方式,文章末尾有源码相关推荐

  1. python爬虫源码附注解_Python小白写的三个入门级的爬虫(附代码和注释)

    Python小白写的三个入门级的爬虫(附注释) 写在前面的话:作者目前正在学习Python,还是一名小白,所以注释可以会有些不准确的地方,望谅解. 这三个小爬虫不是很难,而且用处可能也不大,主要还是锻 ...

  2. python爬微信公众号视频_python爬虫公众号所有信息,并批量下载公众号视频

    之前写过一篇类似的文章:python爬取公众号,用最简单的方式爬虫 还有同学一直在问,可能中间有一些小细节不明确,这次彻底明确一下细节. 本篇添加一个批量下载公众号内视频的功能,可以实现完全复制一个公 ...

  3. python爬取数据的原理_Python爬虫原理

    前言 简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML.JS.CSS代码返回给浏览器,这些代码经过浏览器解析.渲染,将丰富多彩的网页呈现我们眼前: 一.爬虫是什 ...

  4. python爬取网页数据流程_Python爬虫爬取数据的步骤

    爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...

  5. python爬取虎扑评论_python爬虫系列Selenium定向爬取虎扑篮球图片详解

    前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员 ...

  6. python数据加载常规教程_Python加载数据的5种不同方式(收藏)

    数据是数据科学家的基础,因此了解许多加载数据进行分析的方法至关重要.在这里,我们将介绍五种Python数据输入技术,并提供代码示例供您参考. 作为初学者,您可能只知道一种使用p andas.read_ ...

  7. python爬取网页数据软件_python爬虫入门10分钟爬取一个网站

    一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...

  8. python爬取新浪微博数据中心_Python爬虫框架Scrapy实战之批量抓取招聘信息

    网络爬虫抓取特定网站网页的html数据,但是一个网站有上千上万条数据,我们不可能知道网站网页的url地址,所以,要有个技巧去抓取网站的所有html页面.Scrapy是纯Python实现的爬虫框架,用户 ...

  9. python爬取汽车之家_python爬虫实战之爬取汽车之家网站上的图片

    随着生活水平的提高和快节奏生活的发展.汽车开始慢慢成为人们的必需品,浏览各种汽车网站便成为购买合适.喜欢车辆的前提.例如汽车之家网站中就有最新的报价和图片以及汽车的相关内容,是提供信息最快最全的中国汽 ...

最新文章

  1. 什么场景使用mysql的存储过程_mysql存储过程的使用
  2. C++五子棋(四)——走棋原理及权值计算
  3. Cookie的生命周期问题
  4. 认识JSON绑定:概述系列
  5. 学计算机写作文怎么写,关于学电脑的作文
  6. linux定时执行python脚本_ubuntu定时执行python脚本实例代码
  7. Linux下修改时间时区
  8. PHP字符串中的变量解析(+教你如何在PHP字符串中加入变量)
  9. 女式T恤行业调研报告 - 市场现状分析与发展前景预测
  10. apdu 移动sim_SIM卡APDU指令
  11. 【SSM】SSM框架介绍
  12. kinit什么意思_kerberos入坑指南
  13. 理工附中2021年高考成绩查询,人大附中、理工附中、101中学、十二中等5区10校高考成绩汇总!...
  14. 解决Google AdSense导致网站加载慢的优化方法
  15. Vue9.2天气案例_监视属性
  16. 几种经典非线性滤波算法简单概括(EKF,UKF,CKF,PF)
  17. 含泪整理最优质衣帽间su模型素材,你想要的这里都有
  18. [享学Eureka] 十、简洁巧妙的小工具TimedSupervisorTask:自动调节执行间隔的周期性任务
  19. cmd mvn compile报错_东芝Aquilion16 CT数据通讯报错故障分析与处理
  20. Lifelong SLAM 论文解读合集:针对长时间重复运行SLAM地图更新问题

热门文章

  1. 英伟达RTX 4070 Ti显卡正式发布!你会买吗?
  2. 刘汝佳《算法竞赛入门经典》---总结
  3. 解决电脑网络图标消失,电脑连接不上网络的问题总结。
  4. 人为什么活着__稻盛和夫的哲学
  5. 西安交通大学城市学院计算机二级,西安交通大学城市学院计算机系举行考研经验分享交流会...
  6. 算法开发:将合并后的模型编译成动态库(so文件)提供给qt调用
  7. C语言readdir()函数:读取目录函数
  8. 报表工具使用教程-FineReport决策报表导出Plus
  9. 戴尔服务器r510怎么系统,DELLR510服务器上安系统.docx
  10. html css alpha,CSS滤镜之alpha属性-网页设计,HTML/CSS