1. 程式人生 > >Python3.4---實戰專案-自動下載圖片驗證碼,並儲存到專門資料夾,使用圖片驗證碼庫識別,然後打印出來

Python3.4---實戰專案-自動下載圖片驗證碼,並儲存到專門資料夾,使用圖片驗證碼庫識別,然後打印出來

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>