亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python爬蟲模擬登錄之圖片驗(yàn)證碼實(shí)現(xiàn)詳解

 更新時間:2022年08月05日 09:20:30   作者:start?field  
眾所周知python是一個很強(qiáng)大的語言,它擁有眾多的庫,今天我嘗試了使用python進(jìn)行驗(yàn)證碼的識別,下面這篇文章主要給大家介紹了關(guān)于python爬蟲模擬登錄之圖片驗(yàn)證碼實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下

我們在用爬蟲對門戶網(wǎng)站進(jìn)行模擬登錄是總會有輸入圖片驗(yàn)證碼的,例如這種

那我們怎么解決這個問題實(shí)現(xiàn)全自動的模擬登錄呢?只要思想不滑坡,辦法總比困難多。我這里使用的是百度智能云里面的文字識別功能,每天好像可以免費(fèi)使用個幾百次,識別效果也還行,對一般人而言是夠用了。

接下來說說,怎么使用。

首先,打開百度智能云(https://cloud.baidu.com/)進(jìn)行登入,再進(jìn)入人工智能->文字識別里創(chuàng)建應(yīng)用。

在使用名稱和底下應(yīng)用描述隨便寫寫,然后點(diǎn)立即創(chuàng)建。 

 創(chuàng)建完成,就可以拿到 AppID 、API Key 、Secret Key

之后要在pycharm下載baidu-aip,然后導(dǎo)入AipOcr包。

from aip import AipOcr? ? ? ?#aip在baidu-aip中

 再然后就是初始化百度API

#百度API
APP_ID = '你的之前拿到的AppID'
API_KEY = '你的之前拿到的API Key'
Secret_Key = '你的之前拿到的Secret Key'

我們先要把 圖片驗(yàn)證碼下載下來進(jìn)行二值化處理,這樣識別的準(zhǔn)確率高一些。

這里要下載pillow庫,然后導(dǎo)入Image包

from PIL import Image         #PIL在pillow庫中
    #圖片處理
    # 二值化處理 灰度閾值設(shè)為127,高于這個值的點(diǎn)全部填白色
    img_old = Image.open('code.jpg')
    img_old = img_old.convert('L') # 灰度圖 模式“L” 每個像素用8個bit表示,0表示黑,255表示白
    threshld = 127 #設(shè)置閾值,圖片的像素范圍(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')

對于那些有干擾線,特別還是明暗交替的圖片驗(yàn)證碼來說,這樣很好的避免了被干擾。

這里的圖片中沒有太多干擾線且也沒有明暗交替所以看起來不明顯,只是想讓大家看看對比。

處理前                                                                                                                       處理后

后面就是調(diào)用baidu_aip來讀取圖片中的內(nèi)容。baidu_aip.handwriting

    #讀取處理后的驗(yàn)證碼
    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是一個列表,里面有識別結(jié)果也是一個字典
    print('驗(yàn)證碼是:',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'
    #下載驗(yàn)證碼圖片
    session = requests.session()
    img_data = session.get(url=url,headers=headers).content
    with open('./code.jpg','wb') as fp:
        fp.write(img_data)
    #圖片處理
    # 二值化處理 灰度閾值設(shè)為127,高于這個值的點(diǎn)全部填白色
    img_old = Image.open('code.jpg')
    img_old = img_old.convert('L') # 灰度圖 模式“L” 每個像素用8個bit表示,0表示黑,255表示白
    threshld = 127 #設(shè)置閾值,圖片的像素范圍(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')
 
    #讀取處理后的驗(yàn)證碼
    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是一個列表,里面有識別結(jié)果也是一個字典
    print('驗(yàn)證碼是:',result['words_result'][0]['words'])

這只是百度智能云里面的一個小功能,還有很多其他的功能,大家感興趣可以去看看百度智能云里面的官方文檔 ,還有視頻教程。

總結(jié)

到此這篇關(guān)于python爬蟲模擬登錄之圖片驗(yàn)證碼實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python爬蟲圖片驗(yàn)證碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django websocket原理及功能實(shí)現(xiàn)代碼

    Django websocket原理及功能實(shí)現(xiàn)代碼

    這篇文章主要介紹了Django websocket原理及功能實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • 在win64上使用bypy進(jìn)行百度網(wǎng)盤文件上傳功能

    在win64上使用bypy進(jìn)行百度網(wǎng)盤文件上傳功能

    這篇文章主要介紹了在win64上使用bypy進(jìn)行百度網(wǎng)盤文件上傳功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • 100 個 Python 小例子(練習(xí)題二)

    100 個 Python 小例子(練習(xí)題二)

    這篇文章主要繼續(xù)上一篇文章100 個 Python 小例子(練習(xí)題一)來完成100 個 Python 小例子,本文包括字母識詞、反向輸出II、表轉(zhuǎn)字符串、設(shè)置輸出顏色、算素?cái)?shù)等例子,需要的朋友可以參考一下
    2021-10-10
  • Python實(shí)現(xiàn)的二維碼生成小軟件

    Python實(shí)現(xiàn)的二維碼生成小軟件

    這篇文章主要介紹了Python實(shí)現(xiàn)的二維碼生成小軟件,使用wxPython、python-qrcode、pyqrcode、pyqrnative等技術(shù)和開源類庫實(shí)現(xiàn),需要的朋友可以參考下
    2014-07-07
  • Python中的引用與copy介紹

    Python中的引用與copy介紹

    這篇文章主要以整型數(shù)據(jù)類型及列表為例,詳細(xì)的介紹了再Python中的引用與copy的相關(guān)資料,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • 如何使用Python實(shí)現(xiàn)一個簡易的ORM模型

    如何使用Python實(shí)現(xiàn)一個簡易的ORM模型

    ORM(Object Relational Mapping)是一種程序設(shè)計(jì)技術(shù),用于實(shí)現(xiàn)面向?qū)ο缶幊陶Z言里不同類型系統(tǒng)的數(shù)據(jù)之間的轉(zhuǎn)換。本文將介紹如何使用Python實(shí)現(xiàn)一個簡易的ORM
    2021-05-05
  • python圖形界面開發(fā)之wxPython樹控件使用方法詳解

    python圖形界面開發(fā)之wxPython樹控件使用方法詳解

    這篇文章主要介紹了python圖形界面開發(fā)之wxPython樹控件使用方法詳解,需要的朋友可以參考下
    2020-02-02
  • Python使用面向?qū)ο蠓绞絼?chuàng)建線程實(shí)現(xiàn)12306售票系統(tǒng)

    Python使用面向?qū)ο蠓绞絼?chuàng)建線程實(shí)現(xiàn)12306售票系統(tǒng)

    目前python 提供了幾種多線程實(shí)現(xiàn)方式 thread,threading,multithreading ,其中thread模塊比較底層,而threading模塊是對thread做了一些包裝,可以更加方便的被使用
    2015-12-12
  • Python設(shè)計(jì)模式結(jié)構(gòu)型代理模式

    Python設(shè)計(jì)模式結(jié)構(gòu)型代理模式

    這篇文章主要介紹了Python設(shè)計(jì)模式結(jié)構(gòu)型代理模式,代理模式即Proxy?Pattern,為其他對象提供一種代理以控制對這個對象的訪問,下文內(nèi)容詳細(xì)介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-02-02
  • 詳解使用python繪制混淆矩陣(confusion_matrix)

    詳解使用python繪制混淆矩陣(confusion_matrix)

    這篇文章主要介紹了詳解使用python繪制混淆矩陣(confusion_matrix),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評論