python調(diào)用chrome實(shí)現(xiàn)網(wǎng)頁自動(dòng)操作過程
一. 內(nèi)容簡介
python調(diào)用chrome實(shí)現(xiàn)網(wǎng)頁自動(dòng)操作。
二. 軟件環(huán)境
2.1vsCode 2.2Anaconda
version: conda 22.9.0
2.3代碼
鏈接:
三.主要流程
3.1 下載驅(qū)動(dòng)和插件
調(diào)用谷歌瀏覽器,需要下載瀏覽器驅(qū)動(dòng)(https://registry.npmmirror.com/binary.html?path=chromedriver/),下載對應(yīng)的版本,最新的里面沒有,網(wǎng)上找一下就可以了,谷歌或者csdn,
然后安裝 selenium
! pip install selenium ! pip install pyautogui
安裝成功
3.2 調(diào)用谷歌瀏覽器
這個(gè)驅(qū)動(dòng)沒有路徑,好像也可以運(yùn)行,我只指定了網(wǎng)址,瀏覽的exe路徑,就沒了
# 填寫鏈接 url_survey = 'https://www.wjx.cn/vm/ev6IfcA.aspx' options = webdriver.ChromeOptions() options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_experimental_option('useAutomationExtension', False) # 谷歌瀏覽器exe位置 options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe" # 是否要啟動(dòng)頁面 # options.add_argument("--headless") # 啟用無頭模式 # GPU加速有時(shí)候會(huì)出bug options.add_argument("--disable-gpu") # 禁用GPU加速 options.add_argument("--disable-blink-features=AutomationControlled") driver = webdriver.Chrome(options=options) driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'}) # 啟動(dòng)要填寫的地址,這就啟動(dòng)瀏覽器 driver.get(url_survey) # 這是關(guān)閉瀏覽器 driver.quit()#停止
啟動(dòng)成功
3.3 進(jìn)行網(wǎng)頁操作
需要注意的就是,然后就是按自己的需求寫就好了,有啥其他用到的,以后再補(bǔ)充,現(xiàn)在就用到這一個(gè)
# 兩個(gè)功能一致,使用這個(gè)代碼找到對應(yīng)的代碼,click()即可,和js基本類似,只是部分語法不一樣 # python里面的寫 sinPro = driver.find_elements(By.CSS_SELECTOR, f'.jqradio') # js里面的 document.querySelectorAll(".jqradio")
# 引入相關(guān)模塊 from selenium.webdriver.common.by import By from selenium import webdriver #隨機(jī)數(shù)產(chǎn)生 import random #延時(shí) import time import pyautogui #單選題 def single(driver): # 假設(shè)有10個(gè)單選題 for j in range(1, 18): # 每個(gè)單選題所在的位置 sinPro = driver.find_elements(By.CSS_SELECTOR, f'#div{j}') # 每個(gè)單選題的答案進(jìn)行遍歷 for answer in sinPro: # 對應(yīng)每個(gè)單選題的選項(xiàng)組合 ansItem = answer.find_elements(By.CSS_SELECTOR, '.ui-radio') if ansItem: random.choice(ansItem).click() else: ansItem = answer.find_elements(By.CSS_SELECTOR, '.ui-checkbox') selected_items = random.sample(ansItem, random.randint(2, 4)) # 選擇兩個(gè)不重復(fù)的元素 for item in selected_items: item.click() # 答題時(shí)間間隔 time.sleep(random.randint(0, 1)/2) #腳本執(zhí)行方法 def launch(nums): for i in range(0, nums): url_survey = 'https://www.wjx.cn/vm/ev6IfcA.aspx' options = webdriver.ChromeOptions() options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_experimental_option('useAutomationExtension', False) options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe" # options.add_argument("--headless") # 啟用無頭模式 options.add_argument("--disable-gpu") # 禁用GPU加速 options.add_argument("--disable-blink-features=AutomationControlled") driver = webdriver.Chrome(options=options) driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'}) # 啟動(dòng)要填寫的地址 driver.get(url_survey) # 填寫選擇題 # single(driver) # # 提交按鈕 # end = driver.find_elements(By.CSS_SELECTOR, f'#ctlNext') # end[0].click() #提交按鈕 time.sleep(4) print('已經(jīng)提交了{(lán)}次問卷'.format(int(i) + int(1))) driver.quit()#停止 if __name__ == "__main__": #填寫問卷次數(shù) launch(4000)
結(jié)果如圖
四.參考
【python】自動(dòng)填寫問卷星問卷及提交 http://t.csdnimg.cn/aifYa
到此這篇關(guān)于python調(diào)用chrome實(shí)現(xiàn)網(wǎng)頁自動(dòng)操作的文章就介紹到這了,更多相關(guān)python 網(wǎng)頁自動(dòng)操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python?中?lxml?的?etree?標(biāo)簽解析
這篇文章主要介紹了python?中l(wèi)xml的etree?標(biāo)簽解析,文章圍繞主題展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)或工作有所幫助2022-04-04django框架基于模板 生成 excel(xls) 文件操作示例
這篇文章主要介紹了django框架基于模板 生成 excel(xls) 文件操作,結(jié)合具體實(shí)例形式分析了Django框架基于模板生成excel的實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2019-06-06python中如何實(shí)現(xiàn)將數(shù)據(jù)分成訓(xùn)練集與測試集的方法
這篇文章主要介紹了python中如何實(shí)現(xiàn)將數(shù)據(jù)分成訓(xùn)練集與測試集的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別
這篇文章主要介紹了Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03在python3中實(shí)現(xiàn)查找數(shù)組中最接近與某值的元素操作
今天小編就為大家分享一篇在python3中實(shí)現(xiàn)查找數(shù)組中最接近與某值的元素操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02python調(diào)用java的Webservice示例
這篇文章主要介紹了python調(diào)用java的Webservice具體方法,包含java端和python實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-03-03使用Python的Bottle框架寫一個(gè)簡單的服務(wù)接口的示例
這篇文章主要介紹了使用Python的Bottle框架寫一個(gè)簡單的服務(wù)接口的示例,基于Linux系統(tǒng)環(huán)境,需要的朋友可以參考下2015-08-08詳解利用Python scipy.signal.filtfilt() 實(shí)現(xiàn)信號濾波
這篇文章主要介紹了詳解利用Python scipy.signal.filtfilt() 實(shí)現(xiàn)信號濾波,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06