python驗證碼下載和識別

衆所周知,python是一個很強大的語言,它擁有衆多的庫,今天我嘗試了使用python進行驗證碼的識別。

開始,我們先進行驗證碼的下載。

下載

我們先找見一個登陸需要驗證碼的網站,比如說這個網站:http://user.sc.chinaz.com/login.aspx
在這裏插入圖片描述
在這裏插入圖片描述

按F12進入調試界面,點擊network,再點一下驗證碼進行刷新
在這裏插入圖片描述
可以看到這個圖片:
在這裏插入圖片描述

點擊進入圖片就可以得到一個驗證碼的界面

此後我們再將該界面的圖片進行下載就可以得到一堆的驗證碼了。

在這裏插入圖片描述

識別:

下載完所有的代碼,我們就可以進行驗證碼的識別了。python的驗證碼識別包我們可以下載pytesseract包

當然,在下載pytesseract包之前,我們還得下載tesseract包。如果僅僅就是這樣的話那還是遠遠不夠的,會出現找不見tesseract包的錯誤,所以我們還需要下載Tesseract-OCR

具體的下載方式可以參考博文:Tesseract-OCR下載和安裝

如果還出現錯誤的話,可以參考這篇博文:python3.5 tesseract-ocr 驗證碼識別錯誤解決方案

以上兩篇博文基本上可以解決下載tesseract的很多錯誤了(親測,有效)

好了,上代碼:

import requests,urllib,pytesseract
from PIL import Image

pytesseract.pytesseract.tesseract_cmd = 'D:/Tesseract-OCR/tesseract.exe'
tessdata_dir_config = '--tessdata-dir "D:/Tesseract-OCR/tessdata"'

url = 'http://user.sc.chinaz.com/getcode.aspx?h=30&t=0.7468559373230685'  #驗證碼網址,可以根據需求更換
storeurl = 'C:/Users/11037/Desktop/yanzhengma'   #保存本地文件夾

def savaImg(picurl,saveurl):  #存儲圖片函數
    bytes = urllib.request.urlopen(picurl)
    file = open(saveurl,'wb')
    file.write(bytes.read())
    file.flush()
    file.close()
    return True

def getpicture():   #獲取驗證碼函數
	coun = int(input('請輸入需要下載的驗證碼數量:'))

	for i in range(coun):
		theurl = storeurl + '/' + str(i) + '.jpg'
		if savaImg(url,theurl):
			print('已下載:'+str(i+1))


def jpgtostring(pictureurl):  #圖片轉驗證碼函數
	print('圖片源地址:'+pictureurl)
	picture = Image.open(pictureurl)
	result = pytesseract.image_to_string(picture,lang='eng',config=tessdata_dir_config)
	print(result)


pictureurl = 'C:/Users/11037/Desktop/yanzhengma/1.jpg'
jpgtostring(pictureurl)


驗證碼原圖:

在這裏插入圖片描述
運行結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章