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

Python實(shí)現(xiàn)獲取網(wǎng)頁(yè)內(nèi)容及自動(dòng)填表單與登錄功能

 更新時(shí)間:2023年03月22日 14:07:03   作者:極客柒  
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)模擬瀏覽器啟動(dòng),獲取網(wǎng)頁(yè)內(nèi)容、自動(dòng)填表單、自動(dòng)登錄、自動(dòng)過驗(yàn)證碼等功能,需要的可以參考一下

食用前準(zhǔn)備

python 3.10.10 #二維碼的庫(kù)ddddocr 需要

庫(kù)

import time
import ddddocr

源碼

# import threading  # 導(dǎo)入threading模塊
# from Feishu_SendMsg import *

# Identification verification code
import time
import ddddocr


interval = 100 * 60

# def delayCall():  # 定義方法
#     SendMsg("選題 快快快!!!")

#     timer=threading.Timer(interval,delayCall)  # 每秒運(yùn)行
#     timer.start()  # 執(zhí)行方法
    
# if __name__ == '__main__':  #
#     t1=threading.Timer(interval,function=delayCall)  # 創(chuàng)建定時(shí)器
#     t1.start()  # 開始執(zhí)行線程


from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys


# SendMsg("自動(dòng)填表單")
options = webdriver.ChromeOptions()
options.add_argument('--enable-automation')
options.add_argument('--no-sandbox')
options.add_argument('--disable-extensions')
options.add_argument('--start-maximized')
options.add_argument('--disable-infobars')

prefs = {"profile.default_content_setting_values.autocomplete_enabled": 2}
options.add_experimental_option("prefs", prefs)

# SendMsg("創(chuàng)建 Chrome 瀏覽器實(shí)例")
# 創(chuàng)建 Chrome 瀏覽器實(shí)例
browser = webdriver.Chrome(options=options)

# SendMsg("打開網(wǎng)頁(yè)")
browser.get('www.tttttttt.com')

# SendMsg("找到賬號(hào)和密碼框元素并輸入指定字符串")
username = browser.find_element("name","username")
password = browser.find_element("name","userpass")
usercode = browser.find_element("name","usercode")
img_verifycode = browser.find_element("id","img_verifycode")

# SendMsg("自動(dòng)填充賬號(hào)密碼")
username.send_keys("11111")
password.send_keys("11111")

verifycodeBase64 = img_verifycode.screenshot_as_base64
ocr = ddddocr.DdddOcr()
res = ocr.classification(verifycodeBase64)
usercode.send_keys(res)
# SendMsg(f"識(shí)別并填寫驗(yàn)證碼: {res}")

# SendMsg("提交表單")
password.send_keys(Keys.RETURN)
# SendMsg("登陸: 提交表單")

知識(shí)點(diǎn)補(bǔ)充

下面為大家介紹一下文中用到的ddddocr庫(kù)的相關(guān)使用吧

識(shí)別驗(yàn)證碼的python 庫(kù)有很多,用起來(lái)也并不簡(jiǎn)單,ddddocr (帶帶弟弟ocr)庫(kù)是一個(gè)簡(jiǎn)單實(shí)用的識(shí)別驗(yàn)證碼的庫(kù),推薦給大家

ddddocr具體使用方法

import os
import ddddocr
from time import sleep
from PIL import Image
from selenium import webdriver
from selenium.webdriver.common.by import By

class GetVerificationCode:
	def __init__(self):
        self.res = None
        url = '要登錄的地址'
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()  # 將瀏覽器最大化
        self.driver.get(url)

	# 獲取驗(yàn)證碼信息
    def getVerification(self):
        # 獲取當(dāng)前文件的位置、并獲取保存截屏的位置
        current_location = os.path.dirname(__file__)
        screenshot_path = os.path.join(current_location, "..", "VerificationCode")
        # 截取當(dāng)前網(wǎng)頁(yè)并放到自定義目錄下,并命名為printscreen,該截圖中有我們需要的驗(yàn)證碼
        sleep(1)
        self.driver.save_screenshot(screenshot_path + '//' + 'printscreen.png')
        sleep(1)
        # 定位驗(yàn)證碼
        imgelement = self.driver.find_element(By.XPATH, '驗(yàn)證碼圖片的Xpath定位')
        # 獲取驗(yàn)證碼x,y軸坐標(biāo)
        location = imgelement.location
        # 獲取驗(yàn)證碼的長(zhǎng)寬
        size = imgelement.size
        # 寫成我們需要截取的位置坐標(biāo)
        rangle = (int(location['x'] + 430),
                  int(location['y'] + 200),
                  int(location['x'] + size['width'] + 530),
                  int(location['y'] + size['height'] + 250))
        # 打開截圖
        i = Image.open(screenshot_path + '//' + 'printscreen.png')
        # 使用Image的crop函數(shù),從截圖中再次截取我們需要的區(qū)域
        fimg = i.crop(rangle)
        fimg = fimg.convert('RGB')
        # 保存我們截下來(lái)的驗(yàn)證碼圖片,并讀取驗(yàn)證碼內(nèi)容
        fimg.save(screenshot_path + '//' + 'code.png')
        ocr = ddddocr.DdddOcr()
        with open(screenshot_path + '//' + 'code.png', 'rb') as f:
            img_bytes = f.read()
        self.res = ocr.classification(img_bytes)
        print('識(shí)別出的驗(yàn)證碼為:' + self.res)

    # 判斷驗(yàn)證碼錯(cuò)誤時(shí)的提示信息是否存在
    def isElementPresent(self, by, value):
        try:
            element = self.driver.find_element(by=by, value=value)
        except NoSuchElementException:
            pass
            # 發(fā)生了NoSuchElementException異常,說(shuō)明頁(yè)面中未找到該元素,返回False
            return False
        else:
            # 沒有發(fā)生異常,表示在頁(yè)面中找到了該元素,返回True
            return True

	# 登錄
    def login(self):
        self.getVerification()
        self.driver.find_element(By.XPATH, '用戶名輸入框Xpath定位').send_keys('用戶名')
        self.driver.find_element(By.XPATH, '密碼輸入框Xpath定位').send_keys('密碼')
        self.driver.find_element(By.XPATH, '驗(yàn)證碼輸入框Xpath定位').send_keys(self.res)
        sleep(1)
        self.driver.find_element(By.XPATH, '登錄按鈕Xpath定位').click()
        sleep(2)
		isFlag = True
        while isFlag:
            try:
                isPresent = self.isElementPresent(By.XPATH, '驗(yàn)證碼錯(cuò)誤時(shí)的提示信息Xpath定位')
                if isPresent is True:
                    codeText = self.driver.find_element(By.XPATH, '驗(yàn)證碼錯(cuò)誤時(shí)的提示信息Xpath定位').text
                    if codeText == "驗(yàn)證碼不正確":
                        self.getVerification()
                        sleep(2)
                        self.driver.find_element(By.XPATH, '驗(yàn)證碼輸入框Xpath定位').clear()
                        sleep(1)
                        self.driver.find_element(By.XPATH, '驗(yàn)證碼輸入框Xpath定位').send_keys(self.res)
                        sleep(1)
                        self.driver.find_element(By.XPATH, '登錄按鈕Xpath定位').click()
                        sleep(2)
                    tips = self.driver.find_element(By.XPATH,
                                                    '未輸入驗(yàn)證碼時(shí)的提示信息Xpath定位').text
                    if tips == "請(qǐng)輸入驗(yàn)證碼":
                        self.getVerification()
                        sleep(2)
                        self.driver.find_element(By.XPATH, '驗(yàn)證碼輸入框Xpath定位').click()
                        sleep(1)
                        self.driver.find_element(By.XPATH, '驗(yàn)證碼輸入框Xpath定位').send_keys(self.res)
                        sleep(1)
                        self.driver.find_element(By.XPATH, '登錄按鈕Xpath定位').click()
                        sleep(2)
                    continue
                else:
                    print("驗(yàn)證碼正確,登錄成功!")
            except NoSuchElementException:
                pass
            else:
                isFlag = False
                
        sleep(5)
        self.driver.quit()


if __name__ == '__main__':
    GetVerificationCode().login()

識(shí)別結(jié)果

到此這篇關(guān)于Python實(shí)現(xiàn)獲取網(wǎng)頁(yè)內(nèi)容及自動(dòng)填表單與登錄功能的文章就介紹到這了,更多相關(guān)Python獲取網(wǎng)頁(yè)內(nèi)容內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)按逗號(hào)分隔列表的方法

    Python實(shí)現(xiàn)按逗號(hào)分隔列表的方法

    今天小編就為大家分享一篇Python實(shí)現(xiàn)按逗號(hào)分隔列表的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-10-10
  • 詳解python實(shí)現(xiàn)可視化的MD5、sha256哈希加密小工具

    詳解python實(shí)現(xiàn)可視化的MD5、sha256哈希加密小工具

    這篇文章主要介紹了詳解python實(shí)現(xiàn)可視化的MD5、sha256哈希加密小工具,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 使用PyAudio進(jìn)行音頻處理的詳細(xì)指南

    使用PyAudio進(jìn)行音頻處理的詳細(xì)指南

    PyAudio是一個(gè)基于PortAudio庫(kù)的Python綁定,它允許Python程序直接訪問和操作音頻設(shè)備,下面我們就來(lái)學(xué)習(xí)一下PyAudio處理音頻的具體操作吧
    2025-02-02
  • python中adb有什么功能

    python中adb有什么功能

    在本篇文章里小編給大家分享的是關(guān)于python中adb有功能的知識(shí)點(diǎn)總結(jié),有需要的可以跟著學(xué)習(xí)下。
    2020-06-06
  • 通過Jython調(diào)用Python腳本的實(shí)現(xiàn)方法

    通過Jython調(diào)用Python腳本的實(shí)現(xiàn)方法

    Jython 是 Python 的純 Java 實(shí)現(xiàn)。她無(wú)縫地結(jié)合了 Java 類與 Python,使用戶能以 Python 語(yǔ)言的語(yǔ)法編寫在 Java 虛擬機(jī)上運(yùn)行的 軟件,本文重點(diǎn)給大家介紹通過Jython調(diào)用Python腳本的實(shí)現(xiàn)方法,一起看看吧
    2021-06-06
  • PyTorch張量拼接、切分、索引的實(shí)現(xiàn)

    PyTorch張量拼接、切分、索引的實(shí)現(xiàn)

    在學(xué)習(xí)深度學(xué)習(xí)的過程中,遇到的第一個(gè)概念就是張量,張量在pytorch中的計(jì)算十分重要,本文主要介紹了PyTorch張量拼接、切分、索引的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • python web基礎(chǔ)之加載靜態(tài)文件實(shí)例

    python web基礎(chǔ)之加載靜態(tài)文件實(shí)例

    下面小編就為大家分享一篇python web基礎(chǔ)之加載靜態(tài)文件實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-03-03
  • python3.9安裝RobotFramework的簡(jiǎn)單教程

    python3.9安裝RobotFramework的簡(jiǎn)單教程

    python3.9安裝RobotFramework,不同于python2.7和python3.6,使用這兩個(gè)版本安裝會(huì)出現(xiàn)問題,因?yàn)槲野惭b遇到問題發(fā)現(xiàn)沒有最新的教程,所以打算自己寫一個(gè),同時(shí)下面會(huì)記錄安裝步驟及使用的方法會(huì)出現(xiàn)的一些問題,對(duì)python3.9安裝RobotFramework感興趣的朋友一起看看吧
    2023-01-01
  • Python實(shí)現(xiàn)softmax反向傳播的示例代碼

    Python實(shí)現(xiàn)softmax反向傳播的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)softmax反向傳播的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-04-04
  • python基礎(chǔ)知識(shí)之索引與切片詳解

    python基礎(chǔ)知識(shí)之索引與切片詳解

    在python的學(xué)習(xí)過程,有些同學(xué)對(duì)索引和切換會(huì)感到困惑,今天我們就來(lái)弄清楚它,下面這篇文章主要給大家介紹了關(guān)于python基礎(chǔ)知識(shí)之索引與切片的相關(guān)資料,需要的朋友可以參考下
    2022-05-05

最新評(píng)論

喜德县| 拜城县| 郯城县| 古田县| 呼图壁县| 卢湾区| 云南省| 平顶山市| 金秀| 阳东县| 赞皇县| 安义县| 甘孜县| 阿勒泰市| 铜川市| 防城港市| 贵南县| 苏尼特右旗| 马山县| 南安市| 方城县| 寿阳县| 疏附县| 乌拉特前旗| 弥勒县| 花垣县| 临汾市| 黑水县| 四子王旗| 邳州市| 四子王旗| 湖北省| 大洼县| 扬州市| 桓仁| 镇雄县| 勃利县| 湟源县| 包头市| 武强县| 双峰县|