Python3.4---實戰專案-自動下載圖片驗證碼,並儲存到專門資料夾,使用圖片驗證碼庫識別,然後打印出來
阿新 • • 發佈:2019-02-14
Python3.4—實戰專案-自動下載圖片驗證碼,並儲存到專門資料夾,使用圖片驗證碼庫識別,然後打印出來
1、環境部署
參考文章《使用Python識別圖片驗證碼》內容,製造好圖片驗證碼識別庫msweb1.dat
1.1、對圖片驗證碼隨時下載的URL地址:http://www.msweb.com:8080/checkNumber.action
1.2、程式碼檔案儲存資料夾:C:\Python34\yzm\msweb1\mswebyzm,以及圖片驗證碼被儲存到的資料夾:C:\Python34\
1.3、圖片驗證碼URL下載儲存的資料夾:C:\Python34\yzm\msweb1\mswebyzm
2、python指令碼的原始碼檔案
#coding=gbk
#必須使用gbk語言格式
import os
import urllib
import urllib.request#在python3.x中沒有urllib2,必須使用此語句
import time
import string
import ctypes
from ctypes import *
def identifypicyzm(picyzm):#使用圖片驗證碼識別庫識別圖片驗證碼
dll = ctypes.windll.LoadLibrary('C:/Python34/WmCode.dll')
if (dll.UseUnicodeString(1,1)):
print('SetInUnicode Success:')
else:
print('etInUnicode Fail!')
if(dll.LoadWmFromFile('C:/Python34/msweb1.dat','123456')):#使用圖片驗證碼識別庫,123456為識別庫的密碼
print('Loaddat Success:')
Str = create_string_buffer(20 )
filepath = "C:/Python34/yzm/msweb1/mswebyzm/"+picyzm#組裝圖片驗證碼的圖片絕對路徑
print (filepath)
if(dll.GetImageFromFile(filepath,Str)):
print('GetVcode Success:',Str.raw.decode("gbk"))
print ('\n')
else:
print('GetVcode Fail!')
else:
print('Loaddat Fail!')
def downloadpic(numpic):#批量下載圖片驗證碼檔案
pwd = os.path.exists('C:/Python34/yzm/msweb1/mswebyzm/')
if pwd:#判斷資料夾是否存在
print ('file exist!')
else:
os.mkdir('C:/Python34/yzm/msweb1/mswebyzm/')#不存在自動新建資料夾mswebyzm
numpic = int(numpic)
for i in range(1,numpic+1):
pic_url = "http://www.msweb.com:8080/checkNumber.action"#圖片驗證碼獲取的URL
pic_data_url = urllib.request.urlopen(pic_url)#python3.4的urllib語句
pic_data = pic_data_url.read()
localtime = time.strftime("%Y%m%d%H%M%S",time.localtime())
filename = "C:/Python34/yzm/msweb1/mswebyzm/"+localtime+".jpg"#建立檔案
f = open(filename,"wb")
f.write(pic_data)
f.close()
print ("file"+ " "+str(i)+":"+str(localtime)+".jpg")
time.sleep(1)
print ("finsh!!")
def picyzmlist():#把圖片驗證碼目錄下所有檔案統計出來,並儲存到列表中
count = 0
for filename in os.listdir('C:/Python34/yzm/msweb1/mswebyzm/'):#讀取檔案目錄
#print (filename)#輸入每個檔案的名稱
yzmlist.append(filename)
count += 1#檔案數量自加1
#print (count)#檔案的數量
#print (filelist)
if __name__ == "__main__":
yzmlist = []#用來統計被下載的圖片驗證碼所有圖片的檔名稱的列表
num = input("please input pic num:")
downloadpic(num)
picyzmlist()
#print (yzmlist)
print (len(yzmlist))#len(yzmlist)計算列表的長度
for i in range(0,len(yzmlist)-1):
print('The No. is:',i+1)
identifypicyzm(yzmlist[i])
time.sleep(0.5)
3、指令碼執行情況
C:\Python34>python C:\Python34\yzm\msweb1\mswebyzm2.py
please input pic num:1
file exist!
file 1:20180509162107.jpg
finsh!!
10
The No. is: 1
SetInUnicode Success:
Loaddat Success:
C:/Python34/yzm/msweb1/mswebyzm/20180509152051.jpg
GetVcode Success: C4AA
The No. is: 2
SetInUnicode Success:
Loaddat Success:
C:/Python34/yzm/msweb1/mswebyzm/20180509152230.jpg
GetVcode Success: STQ
The No. is: 3
SetInUnicode Success:
Loaddat Success:
C:/Python34/yzm/msweb1/mswebyzm/20180509152419.jpg
GetVcode Success: 5D
The No. is: 4
SetInUnicode Success:
Loaddat Success:
C:/Python34/yzm/msweb1/mswebyzm/20180509152420.jpg
GetVcode Success: 5NY
The No. is: 5
SetInUnicode Success:
Loaddat Success:
C:/Python34/yzm/msweb1/mswebyzm/20180509152421.jpg
GetVcode Success: B7P3
The No. is: 6
SetInUnicode Success:
Loaddat Success:
C:/Python34/yzm/msweb1/mswebyzm/20180509153309.jpg
GetVcode Success: CCT
The No. is: 7
SetInUnicode Success:
Loaddat Success:
C:/Python34/yzm/msweb1/mswebyzm/20180509153417.jpg
GetVcode Success: 3A8
The No. is: 8
SetInUnicode Success:
Loaddat Success:
C:/Python34/yzm/msweb1/mswebyzm/20180509153907.jpg
GetVcode Success: 8H6G
The No. is: 9
SetInUnicode Success:
Loaddat Success:
C:/Python34/yzm/msweb1/mswebyzm/20180509153908.jpg
GetVcode Success: 96G
C:\Python34>