python調(diào)用chrome實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)操作過(guò)程
一. 內(nèi)容簡(jiǎn)介
python調(diào)用chrome實(shí)現(xiàn)網(wǎng)頁(yè)自動(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/),下載對(duì)應(yīng)的版本,最新的里面沒(méi)有,網(wǎng)上找一下就可以了,谷歌或者csdn,
然后安裝 selenium
! pip install selenium ! pip install pyautogui
安裝成功

3.2 調(diào)用谷歌瀏覽器
這個(gè)驅(qū)動(dòng)沒(méi)有路徑,好像也可以運(yùn)行,我只指定了網(wǎng)址,瀏覽的exe路徑,就沒(méi)了
# 填寫鏈接
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)頁(yè)面
# options.add_argument("--headless") # 啟用無(wú)頭模式
# 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)頁(yè)操作
需要注意的就是,然后就是按自己的需求寫就好了,有啥其他用到的,以后再補(bǔ)充,現(xiàn)在就用到這一個(gè)
# 兩個(gè)功能一致,使用這個(gè)代碼找到對(duì)應(yīng)的代碼,click()即可,和js基本類似,只是部分語(yǔ)法不一樣
# 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:
# 對(duì)應(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") # 啟用無(wú)頭模式
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)}次問(wèn)卷'.format(int(i) + int(1)))
driver.quit()#停止
if __name__ == "__main__":
#填寫問(wèn)卷次數(shù)
launch(4000)結(jié)果如圖


四.參考
【python】自動(dòng)填寫問(wèn)卷星問(wèn)卷及提交 http://t.csdnimg.cn/aifYa
到此這篇關(guān)于python調(diào)用chrome實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)操作的文章就介紹到這了,更多相關(guān)python 網(wǎng)頁(yè)自動(dòng)操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python?中?lxml?的?etree?標(biāo)簽解析
這篇文章主要介紹了python?中l(wèi)xml的etree?標(biāo)簽解析,文章圍繞主題展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)或工作有所幫助2022-04-04
django框架基于模板 生成 excel(xls) 文件操作示例
這篇文章主要介紹了django框架基于模板 生成 excel(xls) 文件操作,結(jié)合具體實(shí)例形式分析了Django框架基于模板生成excel的實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
python中如何實(shí)現(xiàn)將數(shù)據(jù)分成訓(xùn)練集與測(cè)試集的方法
這篇文章主要介紹了python中如何實(shí)現(xiàn)將數(shù)據(jù)分成訓(xùn)練集與測(cè)試集的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別
這篇文章主要介紹了Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
在python3中實(shí)現(xiàn)查找數(shù)組中最接近與某值的元素操作
今天小編就為大家分享一篇在python3中實(shí)現(xiàn)查找數(shù)組中最接近與某值的元素操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
python調(diào)用java的Webservice示例
這篇文章主要介紹了python調(diào)用java的Webservice具體方法,包含java端和python實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-03-03
使用Python的Bottle框架寫一個(gè)簡(jiǎn)單的服務(wù)接口的示例
這篇文章主要介紹了使用Python的Bottle框架寫一個(gè)簡(jiǎn)單的服務(wù)接口的示例,基于Linux系統(tǒng)環(huán)境,需要的朋友可以參考下2015-08-08
詳解利用Python scipy.signal.filtfilt() 實(shí)現(xiàn)信號(hào)濾波
這篇文章主要介紹了詳解利用Python scipy.signal.filtfilt() 實(shí)現(xiàn)信號(hào)濾波,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06

