Python爬虫入门教程 56-100 python爬虫高级技术之验证码篇2-开放平台OCR技术

本文涉及的产品
票证核验,票证核验 50次/账号
通用文字识别,通用文字识别 200次/月
文档理解,结构化解析 100页
简介: 今日的验证码之旅今天你要学习的验证码采用通过第三方AI平台开放的OCR接口实现,OCR文字识别技术目前已经比较成熟了,而且第三方比较多,今天采用的是百度的。注册百度AI平台官方网址:http://ai.

今日的验证码之旅

今天你要学习的验证码采用通过第三方AI平台开放的OCR接口实现,OCR文字识别技术目前已经比较成熟了,而且第三方比较多,今天采用的是百度的。

注册百度AI平台

官方网址:http://ai.baidu.com/
接下来申请
image

接下来创建一个简单应用之后,就可以使用了,我们找到
image

阅读文字识别相关文档

你需要具备基本的阅读第三方文档的能力,打开我们需要的文档

https://cloud.baidu.com/doc/OCR/OCR-API.html#.E9.80.9A.E7.94.A8.E6.96.87.E5.AD.97.E8.AF.86.E5.88.AB

这个页面基本上已经把我们需要做的所有内容都已经标识清楚了

编写获取accesstoken的代码

在目前主流的API开发模式下,都是需要你进行accesstoken的获取的

代码如下 ,重点需要参照文档进行传参的设计
image

    def get_accesstoken(self):
        res = requests.post(self.url.format(self.key,self.secret),headers=self.header)
        content = res.text
        if (content):
            return json.loads(content)["access_token"]

得到accesstoken之后,你可以继续下面的操作

import requests
import json

import base64

import urllib.request, urllib.parse

class GetCode(object):

    def __init__(self):
        self.url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}"
        self.api = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token={}"
        self.header = {
            "Content-Type":'application/json; charset=UTF-8'
        }

        self.key = "你的KEY"
        self.secret = "你的SECRET"

验证码识别阶段

普通没有干扰的验证码,我们直接识别即可,但是有的验证码还是有干扰的,在识别之前,需要对它进行基本的处理,我们采用和上篇文章类似的办法进行,对它进行灰度处理和二值化操作。部分代码我直接硬编码了,不过最终识别的效果并没有比想象的优化多少。

 def init_table(self,threshold=155):
        table = []
        for i in range(256):
            if i < threshold:
                table.append(0)
            else:
                table.append(1)
        return table



    def opt_image(self):
        im = Image.open("66.png")

        im = im.convert('L')
        im = im.point(self.init_table(), '1')
        im.save('66_s.png')
        return "66_s.png"

调用验证码接口

调用百度的验证码接口,不使用百度给的模块直接编写。按照它对应的文档,书写即可。
在这个地方尤其注意官方文档提示
image

    def get_file_content(self,file_path):
        with open(file_path, 'rb') as fp:
            base64_data = base64.b64encode(fp.read())
            s = base64_data.decode()

            data = {}
            data['image'] = s

            decoded_data = urllib.parse.urlencode(data)
            return decoded_data


    def show_code(self):
        image = self.get_file_content(self.opt_image())
        headers = {
            "Content-Type":    "application/x-www-form-urlencoded"
        }
        res = requests.post(self.api.format(self.get_accesstoken()),headers=headers,data=image)
        print(res.text)

通过百度模块调用验证码识别

安装百度AI

pip install baidu-aip

安装之后,就可以使用啦

  1. 声明一些常量,你在百度创建应用之后就可以获取
  2. 初始化文字识别类
  3. 调用对应的方法

image

参考代码

from aip import AipOcr


# 定义常量
APP_ID = '15736693'
API_KEY = '你的KEY'
SECRET_KEY = '你的SECRET'

# 初始化文字识别
aipOcr=AipOcr(APP_ID, API_KEY, SECRET_KEY)

# 读取图片
filePath = "1.jpg"

def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

# 定义参数变量
options = {
    'detect_direction': 'true',
    'language_type': 'CHN_ENG',
}

# 网络图片文字文字识别接口
result = aipOcr.webImage(get_file_content(filePath),options)


print(result)

编码后记

这种通过第三方OCR技术识别验证码的方式,本质上和上篇文章的原理是一致的
在实测过程中发现,没有太多干扰线,搜狗腾讯有道 基本表现一致

对于这种方式,学会即可~,道理都是一致的,当然你可以用Python实现一个图片转文字的小应用是没有任何问题的

欢迎关注非本科程序员公众账号,回复 ocr 下载源码

相关文章
|
15天前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
5天前
|
数据采集 存储 API
利用Python爬虫获取1688关键词接口全攻略
本文介绍如何使用Python爬虫技术合法合规地获取1688关键词接口数据,包括环境准备、注册1688开发者账号、获取Access Token、构建请求URL、发送API请求、解析HTML及数据处理存储等步骤,强调遵守法律法规和合理使用爬虫技术的重要性。
|
13天前
|
数据采集 JSON 开发者
Python爬虫京东商品详情数据接口
京东商品详情数据接口(JD.item_get)提供商品标题、价格、品牌、规格、图片等详细信息,适用于电商数据分析、竞品分析等。开发者需先注册账号、创建应用并申请接口权限,使用时需遵循相关规则,注意数据更新频率和错误处理。示例代码展示了如何通过 Python 调用此接口并处理返回的 JSON 数据。
|
17天前
|
XML 数据采集 数据格式
Python 爬虫必备杀器,xpath 解析 HTML
【11月更文挑战第17天】XPath 是一种用于在 XML 和 HTML 文档中定位节点的语言,通过路径表达式选取节点或节点集。它不仅适用于 XML,也广泛应用于 HTML 解析。基本语法包括标签名、属性、层级关系等的选择,如 `//p` 选择所有段落标签,`//a[@href=&#39;example.com&#39;]` 选择特定链接。在 Python 中,常用 lxml 库结合 XPath 进行网页数据抓取,支持高效解析与复杂信息提取。高级技巧涵盖轴的使用和函数应用,如 `contains()` 用于模糊匹配。
|
1月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
97 6
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
214 4
|
4月前
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。
|
5月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
93 4
|
2月前
|
数据采集 存储 数据挖掘
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
206 66
|
1月前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化