python3爬蟲之驗證碼的識別——第三方平臺超級鷹

用ocr庫進行圖形驗證碼的正確率實在是不太行php

並且這個圖像處理這一行當實在是很深,不是一天兩天就能搞定的html

所以這裏推薦一個第三方平臺——超級鷹http://www.chaojiying.compython

小聲嗶嗶,真的沒收廣告費json

 

首先來看一下超級鷹都能識別啥?http://www.chaojiying.com/price.htmlapi

基本能涵蓋常見的狀況,固然不一樣的項目所需的積分不一樣(充值對應積分,首次關注公衆號送1000積分)ide

 

話很少說,直接看開發文檔http://www.chaojiying.com/api.htmlpost

 

選擇python 的Demo下載,不過須要更改幾處,由於這個Demo是Python2寫的測試

python2下:網站

 1 #!/usr/bin/env python
 2 # coding:utf-8
 3 
 4 import requests
 5 from hashlib import md5
 6 
 7 class Chaojiying_Client(object):
 8 
 9     def __init__(self, username, password, soft_id):
10         self.username = username
11         password =  password.encode('utf8')
12         self.password = md5(password).hexdigest()
13         self.soft_id = soft_id
14         self.base_params = {
15             'user': self.username,
16             'pass2': self.password,
17             'softid': self.soft_id,
18         }
19         self.headers = {
20             'Connection': 'Keep-Alive',
21             'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
22         }
23 
24     def PostPic(self, im, codetype):
25         """
26         im: 圖片字節
27         codetype: 題目類型 參考 http://www.chaojiying.com/price.html
28         """
29         params = {
30             'codetype': codetype,
31         }
32         params.update(self.base_params)
33         files = {'userfile': ('ccc.jpg', im)}
34         r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)
35         return r.json()
36 
37     def ReportError(self, im_id):
38         """
39         im_id:報錯題目的圖片ID
40         """
41         params = {
42             'id': im_id,
43         }
44         params.update(self.base_params)
45         r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)
46         return r.json()
47 
48 
49 if __name__ == '__main__':
50     chaojiying = Chaojiying_Client('超級鷹用戶名', '超級鷹用戶名的密碼', '96001')    #用戶中心>>軟件ID 生成一個替換 96001
51     im = open('a.jpg', 'rb').read()                                                    #本地圖片文件路徑 來替換 a.jpg 有時WIN系統需要//
52     print chaojiying.PostPic(im, 1902)                                                #1902 驗證碼類型  官方網站>>價格體系 3.4+版 print 後要加()

只須要把最後一行的print後面加括號()便可spa

最後三行所須要的參數:

超級鷹用戶名和密碼:註冊這個網站的

軟件ID:在用戶中心處獲取

 

 圖片路徑:注意相對路徑和絕對路徑,案例中附帶了一個圖片a.jpg

驗證碼類型:在價格體系中查詢 http://www.chaojiying.com/price.html

 

拿Demo中的圖片先測試一下哈!

運行結果(經過程序可知是json格式的數據):

{'err_no': 0, 'err_str': 'OK', 'pic_id': '9077217532830000008', 'pic_str': '7261', 'md5': '09ba9448333d153c69bd29da7c7f3369'}

返回說明:
err_no,(數值) 返回代碼
err_str,(字符串) 中文描述的返回信息 
pic_id,(字符串) 圖片標識號,或圖片id號
pic_str,(字符串) 識別出的結果
md5,(字符串) md5校驗值,用來校驗此條數據返回是否真實有效

 

試一下其餘圖片

 

{'err_no': 0, 'err_str': 'OK', 'pic_id': '2077218082830000010', 'pic_str': '46168', 'md5': '443788486ea90d7f249f278d5694053d'}

 

再測試一下帶有中文的圖片

{'err_no': 0, 'err_str': 'OK', 'pic_id': '3077218112830000013', 'pic_str': '基加證溼站代', 'md5': '61a282f8c45c8ac35d6904ff315e991d'}

 

 總結下來仍是比較靠譜滴!

相關文章
相關標籤/搜索