<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們在用爬蟲對入口網站進行模擬登入是總會有輸入圖片驗證碼的,例如這種
那我們怎麼解決這個問題實現全自動的模擬登入呢?只要思想不滑坡,辦法總比困難多。我這裡使用的是百度智慧雲裡面的文字識別功能,每天好像可以免費使用個幾百次,識別效果也還行,對一般人而言是夠用了。
接下來說說,怎麼使用。
首先,開啟百度智慧雲(https://cloud.baidu.com/)進行登入,再進入人工智慧->文字識別裡建立應用。
在使用名稱和底下應用描述隨便寫寫,然後點立即建立。
建立完成,就可以拿到 AppID 、API Key 、Secret Key
之後要在pycharm下載baidu-aip,然後匯入AipOcr包。
from aip import AipOcr #aip在baidu-aip中
再然後就是初始化百度API
#百度API APP_ID = '你的之前拿到的AppID' API_KEY = '你的之前拿到的API Key' Secret_Key = '你的之前拿到的Secret Key'
我們先要把 圖片驗證碼下載下來進行二值化處理,這樣識別的準確率高一些。
這裡要下載pillow庫,然後匯入Image包
from PIL import Image #PIL在pillow庫中
#圖片處理 # 二值化處理 灰度閾值設為127,高於這個值的點全部填白色 img_old = Image.open('code.jpg') img_old = img_old.convert('L') # 灰度圖 模式「L」 每個畫素用8個bit表示,0表示黑,255表示白 threshld = 127 #設定閾值,圖片的畫素範圍(0,255) table = [] for i in range(256): if i <threshld: table.append(0) else: table.append(1) img_old = img_old.point(table,'1') # 對影象畫素操作 模式「1」 為二值影象,非黑即白。但是它每個畫素用8個bit表示,0表示黑,255表示白 img_old.save('code.jpg')
對於那些有干擾線,特別還是明暗交替的圖片驗證碼來說,這樣很好的避免了被幹擾。
這裡的圖片中沒有太多幹擾線且也沒有明暗交替所以看起來不明顯,只是想讓大家看看對比。
處理前 處理後
後面就是呼叫baidu_aip來讀取圖片中的內容。baidu_aip.handwriting
#讀取處理後的驗證碼 with open('code.jpg','rb') as fp: img_new = fp.read() baidu_aip = AipOcr(APP_ID,API_KEY,Secret_Key) result = baidu_aip.handwriting(img_new) #使用的是識別手寫文字,返回一個字典,其中words_result是一個列表,裡面有識別結果也是一個字典 print('驗證碼是:',result['words_result'][0]['words'])
baidu_aip.handwriting這裡面有很多識別文字的方法,我用的是識別手寫文字,如果大家使用這個方法感覺效果不好可以選擇其他方法。
最後是完整的程式碼。
# -- coding:UTF-8 -- import requests from PIL import Image from aip import AipOcr if __name__ == "__main__": #百度API APP_ID = '你的之前拿到的AppID' API_KEY = '你的之前拿到的API Key' Secret_Key = '你的之前拿到的Secret Key' headers = { "user-agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 97.0.4692.71Safari / 537.36Edg / 97.0.1072.55" } url = 'http://www.hyocr.com/captcha.php' #下載驗證碼圖片 session = requests.session() img_data = session.get(url=url,headers=headers).content with open('./code.jpg','wb') as fp: fp.write(img_data) #圖片處理 # 二值化處理 灰度閾值設為127,高於這個值的點全部填白色 img_old = Image.open('code.jpg') img_old = img_old.convert('L') # 灰度圖 模式「L」 每個畫素用8個bit表示,0表示黑,255表示白 threshld = 127 #設定閾值,圖片的畫素範圍(0,255) table = [] for i in range(256): if i <threshld: table.append(0) else: table.append(1) img_old = img_old.point(table,'1') # 對影象畫素操作 模式「1」 為二值影象,非黑即白。但是它每個畫素用8個bit表示,0表示黑,255表示白 img_old.save('code.jpg') #讀取處理後的驗證碼 with open('code.jpg','rb') as fp: img_new = fp.read() baidu_aip = AipOcr(APP_ID,API_KEY,Secret_Key) result = baidu_aip.handwriting(img_new) #使用的是識別手寫文字,返回一個字典,其中words_result是一個列表,裡面有識別結果也是一個字典 print('驗證碼是:',result['words_result'][0]['words'])
這只是百度智慧雲裡面的一個小功能,還有很多其他的功能,大家感興趣可以去看看百度智慧雲裡面的官方檔案 ,還有視訊教學。
總結
到此這篇關於python爬蟲模擬登入之圖片驗證碼實現的文章就介紹到這了,更多相關python爬蟲圖片驗證碼內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45