最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python +Selenium解決圖片驗(yàn)證碼登錄或注冊(cè)問(wèn)題(推薦)

 更新時(shí)間:2020年02月09日 12:23:26   作者:暗潮洶涌  
這篇文章主要介紹了Python Selenium解決圖片驗(yàn)證碼登錄或注冊(cè)問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

1. 解決思路

首先要獲得這張驗(yàn)證碼的圖片,但是該圖片一般都是用的js寫(xiě)的,不能夠通過(guò)url進(jìn)行下載。
解決方案:截圖然后根據(jù)該圖片的定位和長(zhǎng)高,使用工具進(jìn)行裁剪
裁剪完畢之后,使用工具解析該圖片。

2. 代碼實(shí)現(xiàn)

2.1 裁剪出驗(yàn)證碼圖片

裁剪圖片需要使用 Pillow 庫(kù),進(jìn)入pip包路徑后輸入安裝命令pip install Pillow:
之前安裝的時(shí)候忘記了截圖,只能夠截一張安裝后的圖片了 ╰(:з╰∠)_

安裝完成后,代碼實(shí)現(xiàn)方式如下:

#coding=utf-8
from selenium import webdriver
import time
from PIL import Image
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Chrome()
# 進(jìn)入該網(wǎng)站
driver.get("http://www2.nmec.org.cn/wangbao/nme/sp/root/account/signup.html")
# 能否在5s內(nèi)找到驗(yàn)證碼元素,能才繼續(xù)
if WebDriverWait(driver,5).until(lambda the_driver:the_driver.find_element_by_id("CaptchaImg"), "查找不到該元素"):
 # 對(duì)于一次截屏無(wú)法到截到驗(yàn)證碼的情況,需要滾動(dòng)一段距離,然后驗(yàn)證碼的y坐標(biāo)也應(yīng)該減去這段距離
 scroll = 500
 js = "document.documentElement.scrollTop='%s'" %scroll
 driver.execute_script(js)
 # 截下該網(wǎng)站的圖片
 driver.get_screenshot_as_file("E:/Python_selenium_advance/Picture/full.png")
 # 獲得這個(gè)圖片元素
 img_ele = driver.find_element_by_id("CaptchaImg")
 # 得到該元素左上角的 x,y 坐標(biāo)和右下角的 x,y 坐標(biāo)
 left = img_ele.location.get('x')
 upper = img_ele.location.get('y') - 500
 right = left + img_ele.size.get('width')
 lower = upper + img_ele.size.get('height')
 # 打開(kāi)之前的截圖
 img = Image.open("E:/Python_selenium_advance/Picture/full.png")
 # 對(duì)截圖進(jìn)行裁剪,裁剪的范圍為之前驗(yàn)證的左上角至右下角范圍
 new_img = img.crop((left, upper, right, lower))
 # 裁剪完成之后保存到指定路徑
 new_img.save("E:/Python_selenium_advance/Picture/croped.png")
 
 time.sleep(2)
 driver.quit()
else:
 print("找不到驗(yàn)證碼元素")

2.2 使用 圖鑒 商用接口來(lái)識(shí)別驗(yàn)證碼

接口介紹網(wǎng)址:http://www.ttshitu.com/docs/python.html#pageTitle

調(diào)用該接口直接使用網(wǎng)頁(yè)上的接口文檔就行,代碼如下:

import json
import requests
import base64
from io import BytesIO
from PIL import Image
from sys import version_info

def base64_api(uname, pwd, softid, img):
 img = img.convert('RGB')
 buffered = BytesIO()
 img.save(buffered, format="JPEG")
 if version_info.major >= 3:
  b64 = str(base64.b64encode(buffered.getvalue()), encoding='utf-8')
 else:
  b64 = str(base64.b64encode(buffered.getvalue()))
 data = {"username": uname, "password": pwd, "softid": softid, "image": b64}
 result = json.loads(requests.post("http://api.ttshitu.com/base64", json=data).text)
 if result['success']:
  return result["data"]["result"]
 else:
  return result["message"]
 return ""

將其保存為一個(gè)單獨(dú)的 analysis_captcha.py ,然后再導(dǎo)入該方法,直接使用即可:

from analysis_captcha import base64_api

def analysis_captcha(filename):
 '''
 使用 圖鑒 商用接口來(lái)識(shí)別指定位置的驗(yàn)證碼圖片
 :param filename: 驗(yàn)證碼圖片位置
 :return : 驗(yàn)證碼文本
 '''
 img_path = filename
 img = Image.open(img_path)
 result = base64_api(uname='kaibin', pwd='******', softid='4545454', img=img)
 return result

驗(yàn)證碼識(shí)別可能會(huì)出錯(cuò),到時(shí)候再點(diǎn)擊驗(yàn)證碼圖片換一張,然后重來(lái)即可。

總結(jié)

以上所述是小編給大家介紹的Python +Selenium實(shí)現(xiàn)圖片驗(yàn)證碼登錄或注冊(cè)問(wèn)題,希望對(duì)大家有所幫助!

相關(guān)文章

  • python字符串格式化(%格式符和format方式)

    python字符串格式化(%格式符和format方式)

    在編寫(xiě)程序的過(guò)程中,經(jīng)常需要進(jìn)行格式化輸出,每次用每次查,干脆就在這里整理一下,下面這篇文章主要給大家介紹了關(guān)于python字符串格式化的相關(guān)資料,分別是%格式符和format方式,需要的朋友可以參考下
    2022-02-02
  • python用ConfigObj讀寫(xiě)配置文件的實(shí)現(xiàn)代碼

    python用ConfigObj讀寫(xiě)配置文件的實(shí)現(xiàn)代碼

    發(fā)現(xiàn)一個(gè)簡(jiǎn)單而又強(qiáng)大的讀寫(xiě)配置文件的lib,個(gè)人覺(jué)得最大的亮點(diǎn)在于自帶的格式校驗(yàn)功能,并且支持復(fù)雜的嵌套格式,而且使用起來(lái)也相當(dāng)?shù)暮?jiǎn)便
    2013-03-03
  • python實(shí)現(xiàn)根據(jù)文件格式分類(lèi)

    python實(shí)現(xiàn)根據(jù)文件格式分類(lèi)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)根據(jù)文件格式分類(lèi),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Python模擬實(shí)現(xiàn)高斯分布擬合

    Python模擬實(shí)現(xiàn)高斯分布擬合

    當(dāng)我們繪制一個(gè)數(shù)據(jù)集(如直方圖)時(shí),圖表的形狀就是我們所說(shuō)的分布,最常見(jiàn)的連續(xù)值形狀是鐘形曲線,也稱(chēng)為高斯分布或正態(tài)分布,下面我們就來(lái)利用Python模擬實(shí)現(xiàn)一下高斯分布吧
    2023-12-12
  • Python中的Logging模塊在項(xiàng)目應(yīng)用小結(jié)

    Python中的Logging模塊在項(xiàng)目應(yīng)用小結(jié)

    Python標(biāo)準(zhǔn)庫(kù)中的logging模塊為我們提供了強(qiáng)大而靈活的日志記錄功能,本文將介紹如何使用logging模塊,并探討其在Python開(kāi)發(fā)中的實(shí)際應(yīng)用,感興趣的朋友一起看看吧
    2024-04-04
  • python的range和linspace使用詳解

    python的range和linspace使用詳解

    今天小編就為大家分享一篇python的range和linspace使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • python中的關(guān)鍵字(pass)使用

    python中的關(guān)鍵字(pass)使用

    這篇文章主要介紹了python中的關(guān)鍵字(pass)使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Python中如何獲取類(lèi)屬性的列表

    Python中如何獲取類(lèi)屬性的列表

    這篇文章主要給大家介紹了在Python中如何獲取類(lèi)屬性的列表,文中通過(guò)示例代碼介紹的很詳細(xì),相信對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,有需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2016-12-12
  • Python實(shí)現(xiàn)的三層BP神經(jīng)網(wǎng)絡(luò)算法示例

    Python實(shí)現(xiàn)的三層BP神經(jīng)網(wǎng)絡(luò)算法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的三層BP神經(jīng)網(wǎng)絡(luò)算法,結(jié)合完整實(shí)例形式分析了Python三層BP神經(jīng)網(wǎng)絡(luò)算法的具體實(shí)現(xiàn)與使用相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • Python實(shí)現(xiàn)簡(jiǎn)易超市管理系統(tǒng)

    Python實(shí)現(xiàn)簡(jiǎn)易超市管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python如何實(shí)現(xiàn)簡(jiǎn)易超市管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09

最新評(píng)論

武平县| 通山县| 宁明县| 淮安市| 临潭县| 宜宾县| 司法| 盐边县| 石景山区| 迭部县| 伊金霍洛旗| 新和县| 塔河县| 莎车县| 临夏县| 阜城县| 太原市| 利辛县| 海南省| 通城县| 钟祥市| 临朐县| 浦北县| 广元市| 陆河县| 耒阳市| 北流市| 来凤县| 蓬莱市| 孟津县| 梨树县| 通渭县| 宣恩县| 灵石县| 嵩明县| 德州市| 沧州市| 巧家县| 平乐县| 阜南县| 青龙|