使用超級鷹打碼平台擷取坐标點選驗證碼圖示對應坐标
将本地圖檔打開使用超級鷹平台驗證擷取坐标值
import requests
from hashlib import md5
from PIL import Image
def Chaojiying_Client(object):
.... # 超級鷹用戶端部分代碼可以直接在超級鷹官網擷取
# 根據超級鷹規則處理驗證碼圖檔大小
def format_img():
# 打開儲存的驗證碼圖檔
img = Image.open('test.jpg')
# 擷取圖檔規格
w, h = img.size
# 超級鷹平台對上傳的圖檔有規格大小限制,長度不能超過460,寬度不能超過310
w_s = 310 # 指定寬度
h_s = int(w_s / w * h) # 根據寬度比例擷取對應高度
# 指定圖檔大小生成新的圖檔并儲存
img = img.resize((w_s, h_s), Image.ANTIALIAS)
img.save('show.png')
# 傳回縮放比例
return w_s / w
# 擷取驗證結果坐标
def get_coord():
# 生成超級鷹用戶端
chaojiying = Chaojiying_Client(username, password, software_key) # 使用者中心>>軟體ID 生成一個替換 96001
# 打碼識别錯誤回報接口,可以根據實際情況判斷條件調用,傳入參數為超級鷹傳回資料中的pic_id數值
# print(chaojiying.ReportError(pic_id))
# 根據超級鷹平台圖檔規格大小對驗證碼圖檔進行縮放/放大并擷取比例
preprotion, im = format_img()
# 将符合規格的圖檔大小發送給超級鷹api擷取傳回值,驗證碼類型在官網檢視
with open('show.png', 'rb') as fp:
im = fp.read()
s = chaojiying.PostPic(im, 9004) # 9004驗證碼類型 官方網站>>價格體系
# 從超級鷹響應資料裡擷取坐标值
rangle = s['pic_str'].split('|')
# 建立清單用于接收坐标結果
result = []
for i in rangle:
# 分割為x坐标和y坐标
i = i.split(',')
# 将x和y坐标按比例還原組合為元組追加到清單中
result.append((int(int(i[0]) / preprotion), int(int(i[1]) / preprotion)))
# 傳回實際坐标結果集
return result