国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Selenium 初步使用之自動(dòng)登錄(包含識(shí)別驗(yàn)證碼),超級(jí)詳細(xì)

這篇具有很好參考價(jià)值的文章主要介紹了Selenium 初步使用之自動(dòng)登錄(包含識(shí)別驗(yàn)證碼),超級(jí)詳細(xì)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、簡(jiǎn)介

初次開始使用Selenium,于是開始用登錄作為聯(lián)手項(xiàng)目,是一個(gè)真實(shí)的登錄界面,包含驗(yàn)證碼(驗(yàn)證碼是難點(diǎn),獲取與識(shí)別),以下會(huì)講的很詳細(xì),我怕我下次又忘記了
我采用Selenium + python + 百度云OCR,安裝等教程自行百度,我就不多說(shuō)了

二、selenium打開瀏覽器獲取相應(yīng)el

from selenium import webdriver
from selenium.webdriver.common.by import By
import base64
#注冊(cè)Chrome驅(qū)動(dòng),打開瀏覽器網(wǎng)址
driver = webdriver.Chrome()
url = "************"
driver.get(url)
#獲取相應(yīng)el
driver.find_element(By.NAME,"***").send_keys('***')
driver.find_element(By.NAME, "***").send_keys('***')
#獲取圖片
png = driver.find_element(By.CSS_SELECTOR,"****")
img_url = png.get_attribute("src")  # 獲得圖片的url,本次測(cè)試的是bs64生成,采用解碼獲得圖片
head, context = img_url.split(",")  # 截取后字段的bas64編碼
img_data = base64.b64decode(context)
image = Image.open(BytesIO(img_data));
image.save("capt.png")

這段代碼主要是利用selenium打開網(wǎng)站,獲取到相應(yīng)的dom,find_element_by_id等寫法已經(jīng)統(tǒng)一換為find_element(By.ID, “***”)等了,先將圖片保存下來(lái)考研方便后續(xù)的識(shí)別

三、驗(yàn)證碼預(yù)處理

驗(yàn)證碼一般無(wú)法直接識(shí)別,我們需要通過(guò)灰度、二值、降噪等手段,使得圖片更加清晰,提高圖片的識(shí)別準(zhǔn)確率
下列代碼需要提前引入以下包

from PIL import Image

1.灰度化

img = img.convert('L')  # P模式轉(zhuǎn)換為L(zhǎng)模式(灰度模式默認(rèn)閾值127)

2.二值化

count = 230  # 設(shè)定閾值,閾值的大小由圖片的清晰度等自行調(diào)節(jié)
table = []
for i in range(256):
    if i < count:
        table.append(0)
    else:
        table.append(1)
img = img.point(table, '1')
img.save('captcha.png')

3.降噪

pixdata = img.load()
w,h = img.size
for y in range(1,h-1):
   for x in range(1,w-1):
        count = 0
        if pixdata[x,y-1] > 245:
            count = count + 1
        if pixdata[x,y+1] > 245:
            count = count + 1
        if pixdata[x-1,y] > 245:
            count = count + 1
        if pixdata[x+1,y] > 245:
            count = count + 1
        if count > 2:
            pixdata[x,y] = 255
return img

四、百度云識(shí)別

需要提前注冊(cè)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-788427.html

from aip import AipOcr
# 識(shí)別碼
APP_ID = '****'
API_KEY = '****'
SECRET_KEY = '****'
# 初始化對(duì)象
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 讀取圖片
def get_file_content(file_path):
    with open(file_path, 'rb') as f:
        return f.read()

image = get_file_content('end.png') # 傳入圖片
# 定義參數(shù)變量
options = {'language_type': 'ENG', }  # 識(shí)別語(yǔ)言類型,默認(rèn)為'CHN_ENG'中英文混合
#  調(diào)用通用文字識(shí)別
result = client.basicGeneral(image, options)  # 高精度接口 basicAccurate
for word in result['words_result']:
    captcha = (word['words'])

print('識(shí)別結(jié)果:' + captcha)
return captcha

五、完整代碼

import base64
from io import BytesIO
from selenium import webdriver
from selenium.webdriver.common.by import By
from PIL import Image
from time import sleep
from aip import AipOcr

# 對(duì)二值化的圖像進(jìn)行降噪處理,使得識(shí)別更加準(zhǔn)確
def depoint(img):
    pixdata = img.load()
    w,h = img.size
    for y in range(1,h-1):
        for x in range(1,w-1):
            count = 0
            if pixdata[x,y-1] > 245:
                count = count + 1
            if pixdata[x,y+1] > 245:
                count = count + 1
            if pixdata[x-1,y] > 245:
                count = count + 1
            if pixdata[x+1,y] > 245:
                count = count + 1
            if count > 2:
                pixdata[x,y] = 255
    return img

# 獲得驗(yàn)證碼,并進(jìn)行處理,二值化
def deal_image():
    png = driver.find_element(By.CSS_SELECTOR,".*******")
    img_url = png.get_attribute("src")  # 獲得圖片的url,本次測(cè)試的是bs64生成,采用解碼獲得圖片
    head, context = img_url.split(",")  # 截取后字段的bas64編碼
    img_data = base64.b64decode(context)
    image = Image.open(BytesIO(img_data));
    image.save("capt.png")

    img = Image.open('capt.png')
    img = img.convert('L')  # P模式轉(zhuǎn)換為L(zhǎng)模式(灰度模式默認(rèn)閾值127)
    count = 230  # 設(shè)定閾值,閾值的大小由圖片的清晰度等自行調(diào)節(jié)
    table = []
    for i in range(256):
        if i < count:
            table.append(0)
        else:
            table.append(1)

    # print(table)

    img = img.point(table, '1')
    img.save('captcha.png')

# 調(diào)用百度云OCR API 進(jìn)行識(shí)別
def discern_captcha():
    # 識(shí)別碼
    APP_ID = '****'
    API_KEY = '****'
    SECRET_KEY = '****'
    # 初始化對(duì)象
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    # 讀取圖片
    def get_file_content(file_path):
        with open(file_path, 'rb') as f:
            return f.read()

    image = get_file_content('end.png') # 傳入圖片
    # 定義參數(shù)變量
    options = {'language_type': 'ENG', }  # 識(shí)別語(yǔ)言類型,默認(rèn)為'CHN_ENG'中英文混合
    #  調(diào)用通用文字識(shí)別
    result = client.basicGeneral(image, options)  # 高精度接口 basicAccurate
    for word in result['words_result']:
        captcha = (word['words'])

    print('識(shí)別結(jié)果:' + captcha)
    return captcha

# 登錄事件,若識(shí)別不準(zhǔn)確需點(diǎn)擊第二次重復(fù)
def ClickRandomCode():
    deal_image()
    image = depoint(Image.open('captcha.png'))
    image.save('end.png')
    image = depoint(Image.open('end.png'))
    image.save("end.png")
    randomCode = discern_captcha()
    driver.find_element(By.NAME, "randomCode").send_keys(randomCode)
    driver.find_element(By.CSS_SELECTOR, ".card-z .el-button").click()
    sleep(2) # 錯(cuò)誤或成功信息有延遲
    try:
        text = driver.find_element(By.CSS_SELECTOR, ".el-message__content").text
        if (text == "驗(yàn)證碼錯(cuò)誤"):
            driver.find_element(By.CSS_SELECTOR, ".verification-code > img").click()
            driver.find_element(By.CSS_SELECTOR, ".verification-code > img").clear()
            ClickRandomCode() # 遞歸調(diào)用直至正確
            print("驗(yàn)證碼錯(cuò)誤")
        else:
            print("登錄成功")
    except:
        print("ok")

def login(***,***):
    driver.find_element(By.NAME,"****").send_keys(***)
    driver.find_element(By.NAME, "***").send_keys(***)
    ClickRandomCode()

if __name__ == '__main__':
    driver = webdriver.Chrome()
    url = "*****"
    driver.get(url)
    login("****","****")

到了這里,關(guān)于Selenium 初步使用之自動(dòng)登錄(包含識(shí)別驗(yàn)證碼),超級(jí)詳細(xì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python+selenium繞過(guò)滑塊驗(yàn)證,實(shí)現(xiàn)自動(dòng)登錄

    python+selenium繞過(guò)滑塊驗(yàn)證,實(shí)現(xiàn)自動(dòng)登錄

    實(shí)現(xiàn)taobao自動(dòng)化登錄,當(dāng)用webdriver打開淘寶時(shí),滑塊驗(yàn)證一直失敗,手動(dòng)滑都會(huì)失敗。因?yàn)樘詫殨?huì)檢測(cè)window.navigator.webdriver,控件檢測(cè)到你是selenium進(jìn)入,所以就會(huì)彈出滑塊驗(yàn)證。只需要繞過(guò)檢測(cè)就能實(shí)現(xiàn)自動(dòng)登錄 驗(yàn)證了兩種方法可以跳過(guò): 第一種是給瀏覽器加啟動(dòng)參數(shù),開

    2024年02月12日
    瀏覽(107)
  • [Python自動(dòng)化]selenium之驗(yàn)證碼識(shí)別

    [Python自動(dòng)化]selenium之驗(yàn)證碼識(shí)別

    這一專欄,將以目的為導(dǎo)向,以簡(jiǎn)化或自動(dòng)化完成工作任務(wù)為目標(biāo),將Python運(yùn)用于實(shí)踐中,解決實(shí)際問(wèn)題,以激發(fā)讀者對(duì)這門腳本語(yǔ)言的學(xué)習(xí)興趣。在開始Python自動(dòng)化相關(guān)實(shí)戰(zhàn)的學(xué)習(xí)前,建議對(duì) Python語(yǔ)言本身 以及 Python 爬蟲 的相關(guān)知識(shí)展開一定的學(xué)習(xí)與了解。對(duì)此博客已開

    2023年04月08日
    瀏覽(19)
  • selenium--自動(dòng)化識(shí)別圖片驗(yàn)證碼并輸入

    selenium--自動(dòng)化識(shí)別圖片驗(yàn)證碼并輸入

    首先注冊(cè)百度智能云賬號(hào)(這里我用的是百度智能云): ? ?1.要在這里面保存好API Key 和?Secret Key ?2.然后進(jìn)入查看文檔 ? 在pycharm中: 導(dǎo)入自動(dòng)化文件: 在寫自動(dòng)化腳本時(shí)調(diào)用封裝的百度類: 注意:自動(dòng)化識(shí)別文字可能會(huì)出現(xiàn)識(shí)別不出來(lái)的可能,要解決這個(gè)Bug。 代碼分享:

    2024年02月11日
    瀏覽(28)
  • Selenium+2Captcha 自動(dòng)化+驗(yàn)證碼識(shí)別實(shí)戰(zhàn)

    Selenium+2Captcha 自動(dòng)化+驗(yàn)證碼識(shí)別實(shí)戰(zhàn)

    本文深入探討了使用Selenium庫(kù)進(jìn)行網(wǎng)頁(yè)自動(dòng)化操作,并結(jié)合2Captcha服務(wù)實(shí)現(xiàn)ReCAPTCHA驗(yàn)證碼的破解。內(nèi)容涵蓋Selenium的基礎(chǔ)知識(shí)、驗(yàn)證碼的分類、2Captcha服務(wù)的使用,以及通過(guò)實(shí)例進(jìn)行的詳細(xì)講解,最后對(duì)實(shí)踐進(jìn)行總結(jié)和優(yōu)化思考,為讀者提供了一條完整的驗(yàn)證碼破解實(shí)踐路線圖

    2024年02月14日
    瀏覽(23)
  • Java+Selenium+chrome 實(shí)現(xiàn)定時(shí)自動(dòng)登錄(含驗(yàn)證碼解析)

    Java+Selenium+chrome 實(shí)現(xiàn)定時(shí)自動(dòng)登錄(含驗(yàn)證碼解析)

    作為打工人,感覺對(duì)于定時(shí)自動(dòng)登錄這個(gè)功能還是需要會(huì),現(xiàn)將方法分享出來(lái),供大家參考。 說(shuō)明:以chrome瀏覽器為例,其他瀏覽器可以自動(dòng)查找自己瀏覽器的驅(qū)動(dòng),方法相同 進(jìn)入chrome瀏覽器設(shè)置,左側(cè)菜單最后一欄,找到關(guān)于chrome,點(diǎn)開獲取瀏覽器版本號(hào),進(jìn)入 https://r

    2024年02月06日
    瀏覽(17)
  • 使用python庫(kù)解決登錄的驗(yàn)證碼識(shí)別-圖片驗(yàn)證碼

    使用python庫(kù)解決登錄的驗(yàn)證碼識(shí)別-圖片驗(yàn)證碼

    前言: 在UI自動(dòng)化測(cè)試和爬蟲測(cè)試中,驗(yàn)證碼是個(gè)比較頭疼的問(wèn)題,包括:圖片驗(yàn)證碼,滑塊驗(yàn)證碼,等一些常見的驗(yàn)證碼場(chǎng)景。 識(shí)別驗(yàn)證碼的python 庫(kù)有很多,用起來(lái)也并不簡(jiǎn)單,這里推薦一個(gè)簡(jiǎn)單實(shí)用的識(shí)別驗(yàn)證碼的庫(kù) ddddocr (帶帶弟弟ocr)庫(kù)。 今天先用一個(gè)圖片驗(yàn)證碼示

    2023年04月11日
    瀏覽(15)
  • 使用selenium模擬登錄解決滑塊驗(yàn)證問(wèn)題

    目錄 1.登錄入口 2.點(diǎn)擊“賬號(hào)密碼登錄” 3.輸入賬號(hào)、密碼并點(diǎn)擊登錄 4.滑塊驗(yàn)證過(guò)程 5.小結(jié) 本次主要是使用selenium模擬登錄網(wǎng)頁(yè)端的TX新聞,本來(lái)最開始是模擬請(qǐng)求的,但是某一天突然發(fā)現(xiàn),部分賬號(hào)需要經(jīng)過(guò)滑塊驗(yàn)證才能正常登錄,如果還是模擬請(qǐng)求,需要的參數(shù)太多了

    2024年02月16日
    瀏覽(18)
  • Python之selenium,使用webdriver模擬登錄網(wǎng)站(含驗(yàn)證碼)

    Python之selenium,使用webdriver模擬登錄網(wǎng)站(含驗(yàn)證碼)

    前段時(shí)間做了一個(gè)小項(xiàng)目,其中有一段需要自動(dòng)獲取網(wǎng)站后臺(tái)的數(shù)據(jù),但是這個(gè)網(wǎng)站沒有任何提供給開發(fā)者的API,所以只能靠自己去探索。 起初想著用發(fā)送請(qǐng)求的方式去模擬登陸,獲取cookies,從而再獲取網(wǎng)站后臺(tái)數(shù)據(jù),但是因?yàn)樽约禾肆艘恍┰颍艞壛诉@個(gè)方法。 后來(lái)

    2024年02月02日
    瀏覽(23)
  • 使用第三方打碼平臺(tái)圖鑒識(shí)別滑動(dòng)驗(yàn)證碼模擬登錄

    使用第三方打碼平臺(tái)圖鑒識(shí)別滑動(dòng)驗(yàn)證碼模擬登錄

    圖鑒網(wǎng)頁(yè)地址: http://www.ttshitu.com/ 登錄后充值一個(gè)提分 把這個(gè)python腳本復(fù)制保存到一個(gè)python文件中去 識(shí)別流程 首先你要先確定驗(yàn)證碼的類型,然后選擇類型對(duì)應(yīng)的編號(hào) 頁(yè)面分析 我們就用郵箱登錄為例 我們點(diǎn)擊登錄后會(huì)有一個(gè)滑動(dòng)驗(yàn)證碼的驗(yàn)證,這就是我們主要的問(wèn)題,下面我

    2024年02月06日
    瀏覽(30)
  • 使用selenium如何實(shí)現(xiàn)自動(dòng)登錄

    使用selenium如何實(shí)現(xiàn)自動(dòng)登錄

    ??回顧使用requests如何實(shí)現(xiàn)自動(dòng)登錄一文中,提到好多網(wǎng)站在我們登錄過(guò)后,在之后的某段時(shí)間內(nèi)訪問(wèn)該網(wǎng)頁(yè)時(shí),不會(huì)給出請(qǐng)登錄的提示,時(shí)間到期后就會(huì)提示請(qǐng)登錄!這樣在使用爬蟲訪問(wèn)網(wǎng)頁(yè)時(shí)還要登錄,打亂我們的節(jié)奏,并詳細(xì)介紹了使用requests爬取網(wǎng)頁(yè)時(shí)為實(shí)現(xiàn)自動(dòng)登

    2024年02月12日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包