您好,登錄后才能下訂單哦!
小編給大家分享一下如何使用python批量登錄帶有驗證碼的網站,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
1、云計算,典型應用OpenStack。2、WEB前端開發,眾多大型網站均為Python開發。3.人工智能應用,基于大數據分析和深度學習而發展出來的人工智能本質上已經無法離開python。4、系統運維工程項目,自動化運維的標配就是python+Django/flask。5、金融理財分析,量化交易,金融分析。6、大數據分析。
原理為使用selenium驅動chorme打開一個新的進程并打開數組中的網址,之后程序自動輸入我們事先填入的賬號密碼,通過已實現的驗證碼識別模塊填寫驗證碼進行登錄。登陸完成后自動切換頁面,進行下一個頁面的登錄
部署環境:win10
開發環境:python2.7
chrome版本89.0.4389.128
設置查看chorme版本
下載對應版本的chromedriver
解壓后,將chromedriver.exe分別放進chrome瀏覽器目錄 和 Python根目錄
chrome瀏覽器目錄(如:C:\Program Files (x86)\Google\Chrome\Application)
Python根目錄(如:D:\Python\Python37)
pip install pillow
pip install selenium
batchlogin.py
#coding=UTF-8 import time import os from selenium import webdriver from selenium.common.exceptions import NoAlertPresentException from pytesser import * from PIL import Image from PIL import ImageEnhance from PIL import ImageFilter import traceback threshold = 140 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) rep={'O':'0', 'I':'1','L':'1', 'Z':'2', 'S':'8' }; ## 灰度化照片后得到驗證碼 def getverify1(name): im = Image.open(name) # 轉化到灰度圖 imgry = im.convert('L') # imgry.save('g'+name) # 二值化,采用閾值分割法,threshold為分割點 out = imgry.point(table,'1') # out.save('b'+name) # 識別 text = image_to_string(out) # 校正 text = text.strip() text = text.upper(); for r in rep: text = text.replace(r,rep[r]) # out.save(text+'.jpg') print text return text # 獲取瀏覽器當前的驗證碼圖片并調用返回驗證碼 def getVCode(driver): # 保存瀏覽器當前頁面 driver.save_screenshot("page.png") # 從頁面中截取驗證碼(XPATH定位) vcode = driver.find_element_by_xpath("//*[@id='randImage']") # 獲取驗證碼上下左右邊界坐標(手動加減像素以更精確) loc = vcode.location size = vcode.size left = loc['x']+5 top = loc['y'] right = (loc['x'] +size['width']-5) button = (loc['y']+size['height']) # 截取頁面中的驗證碼(進行截圖:參數時一個元組(left,top,right,button)并保存 page_pic = Image.open('page.png') v_code_pic = page_pic.crop((left,top,right,button)) v_code_pic.save('yzm.png') return getverify1('yzm.png') # return getverify1(v_code_pic) #自動登錄操作(參數為登路賬號,密碼,webdriver驅動對象) def login(username,password,driver): v_code = getVCode(driver) driver.find_element_by_id('user_name').click() # 點擊用戶名輸入框 driver.find_element_by_id('user_name').clear() # 清空輸入框 driver.find_element_by_id('user_name').send_keys(username) # 自動敲入用戶名 driver.find_element_by_id('user_password').click() # 點擊密碼輸入框 driver.find_element_by_id('user_password').clear() # 清空輸入框 driver.find_element_by_id('user_password').send_keys(password) # 自動敲入密碼 driver.find_element_by_id('v_code').click() # 點擊驗證碼輸入框 driver.find_element_by_id('v_code').clear() # 清空輸入框 driver.find_element_by_id('v_code').send_keys(v_code) # 自動敲入驗證碼 driver.find_element_by_xpath('//*[@id="SubmitButton"]').click()
open.py
#coding=UTF-8 from selenium import webdriver from batchlogin import * driver = webdriver.Chrome() urls=[ 'http://www.test.com:6086/QX_SPD_B2B/', 'http://www.test.com:6086/QX_SPD_B2B/' ] for i in range(0, len(urls)): url = urls[i] windows_open = "window.open('" + url + "')" driver.execute_script(windows_open) time.sleep(1) #獲取當前頁面句柄 windows = driver.window_handles driver.switch_to_window(windows[i+1]) login("USERNAME","PASSWORD",driver) #cookies=driver.get_cookies() #print(cookies) ##解決頁面加載不正確的問題 time.sleep(2) time.sleep(100) driver.close()
在圖片保存那塊直接讀取網站的圖片并且不保存直接識別
看完了這篇文章,相信你對“如何使用python批量登錄帶有驗證碼的網站”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。