6.3.1 配置baidu_aip

1. 安装baidu_aip
Pip install baidu_aip

2. 配置baidu_aip AppID,APIKey,SecretKey
先注册一个百度账号
然后登录,访问https://console.bce.baidu.com/ai/#/ai/ocr/overview/index
image.png
image.png
image.png
image.png
得到api key就可以了
然后使用一下函数就可以识别图片验证码了。

def discern_captcha():
# 识别码
APP_ID = ‘22809802’
API_KEY = ‘QwYtlA429nI44CxcpEurNLHc’
SECRET_KEY = ‘SlEQeimGIf9zzf4VDPwV53zz5f4QVIOV’
# 初始化对象
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 读取图片
def get_file_content(file_path):
with open(file_path, ‘rb’) as f:
return f.read()

image = get_file_content(‘captcha.png’)
# 定义参数变量
options = {‘language_type’: ‘ENG’, } # 识别语言类型,默认为’CHN_ENG’中英文混合
# 调用通用文字识别
result = client.basicGeneral(image, options) # 高精度接口 basicAccurate
for word in result[‘words_result’]:
captcha = (word[‘words’])

print(‘识别结果:’ + captcha)

return captcha

6.3.2 代码实现

1.导入需要的第三方库

from selenium import webdriver
from PIL import Image
from aip import AipOcr

2获取图片验证码
image.png
2. 使用baidu_aip 库获取验证码的内容,返回内容

def discern_captcha():
# 识别码
APP_ID = ‘22809802’
API_KEY = ‘QwYtlA429nI44CxcpEurNLHc’
SECRET_KEY = ‘SlEQeimGIf9zzf4VDPwV53zz5f4QVIOV’
# 初始化对象
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 读取图片
def get_file_content(file_path):
with open(file_path, ‘rb’) as f:
return f.read()

image = get_file_content(‘1.png’)
# 定义参数变量
options = {‘language_type’: ‘ENG’, } # 识别语言类型,默认为’CHN_ENG’中英文混合
# 调用通用文字识别
result = client.basicGeneral(image, options) # 高精度接口 basicAccurate
for word in result[‘words_result’]:
captcha = (word[‘words’])

print(‘识别结果:’ + captcha)

return captcha
image.png
2. 编写登录操作
image.png

我们获取了表单代码,来定位元素。

def login(captcha):
browser.find_element_by_css_selector(‘input[name=”admin”]’).send_keys(‘admin’)
browser.find_element_by_css_selector(‘input[name=”password”]’).send_keys(‘admin’)
browser.find_element_by_css_selector(‘input[name=”verifycode”]’).send_keys(captcha)
browser.find_element_by_css_selector(‘input[type=”submit”]’).click()
get_captcha()
captcha=discern_captcha()
login(captcha)
image.png
安装代码:

from selenium import webdriver
from PIL import Image
from aip import AipOcr

browser = webdriver.Chrome()

def get_captcha():
browser.get(‘http://192.168.0.240:8003/admin/index.asp‘)
pngx=browser.find_element_by_class_name(‘td4’)
png=pngx.find_element_by_tag_name(‘img’)
png.screenshot(‘capt.png’)
img=Image.open(‘capt.png’)
img=img.convert(‘L’) #p模式转化为L模式模式阈值127
count=160
table=[]
for i in range(256):
if i table.append(0)
else:
table.append(1)
img=img.point(table,’1’)
img.save(‘1.png’)

def discern_captcha():
# 识别码
APP_ID = ‘22809802’
API_KEY = ‘QwYtlA429nI44CxcpEurNLHc’
SECRET_KEY = ‘SlEQeimGIf9zzf4VDPwV53zz5f4QVIOV’
# 初始化对象
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 读取图片
def get_file_content(file_path):
with open(file_path, ‘rb’) as f:
return f.read()

image = get_file_content(‘1.png’)
# 定义参数变量
options = {‘language_type’: ‘ENG’, } # 识别语言类型,默认为’CHN_ENG’中英文混合
# 调用通用文字识别
result = client.basicGeneral(image, options) # 高精度接口 basicAccurate
for word in result[‘words_result’]:
captcha = (word[‘words’])

print(‘识别结果:’ + captcha)

return captcha

def login(captcha):
browser.find_element_by_css_selector(‘input[name=”admin”]’).send_keys(‘admin’)
browser.find_element_by_css_selector(‘input[name=”password”]’).send_keys(‘admin’)
browser.find_element_by_css_selector(‘input[name=”verifycode”]’).send_keys(captcha)
browser.find_element_by_css_selector(‘input[type=”submit”]’).click()
get_captcha()
captcha=discern_captcha()
login(captcha)