日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python实现问卷星自动填写(可以跳过智能验证)

發(fā)布時(shí)間:2024/3/24 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现问卷星自动填写(可以跳过智能验证) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近有一個(gè)社會(huì)實(shí)踐需要做問卷調(diào)查,突發(fā)奇想搞一個(gè)自動(dòng)化腳本,省事省米

1?下載依賴selenium

selenium是一款網(wǎng)頁爬蟲重要的工具。

2? 安裝chrome驅(qū)動(dòng)

這里需要準(zhǔn)備chrome瀏覽器以及對(duì)應(yīng)的驅(qū)動(dòng)。需要注意的是驅(qū)動(dòng)的版本需要和chrome保持一致。
chrome瀏覽器版自行查看本機(jī)安裝版本。

chrome驅(qū)動(dòng)下載鏈接?chrome驅(qū)動(dòng)鏈接找到對(duì)應(yīng)版本的驅(qū)動(dòng)。?

?

下載后將安裝包解壓(解壓后為.exe文件)在這個(gè)文件夾下?

?

??3 導(dǎo)入相關(guān)的包

from selenium import webdriver import time import random from selenium.webdriver.common.by import By import pyautogui

防止被識(shí)別為腳本

option = webdriver.ChromeOptions()option.add_experimental_option('excludeSwitches', ['enable-automation'])option.add_experimental_option('useAutomationExtension', False)browser = webdriver.Chrome(options=option)browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})browser.maximize_window() # 窗口最大化# 這行代碼的作用是將webdriver這個(gè)屬性置為undefinedbrowser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})browser.get(url)time.sleep(2)

??

代碼如下

# -*- coding: utf-8 -*- # @Time : 2023/1/26 11:34 # @Author : wkk # @File : Python自動(dòng)化填問卷星.py from selenium import webdriver import time import random from selenium.webdriver.common.by import By import pyautoguidef run(num, url):for i in range(num):option = webdriver.ChromeOptions()option.add_experimental_option('excludeSwitches', ['enable-automation'])option.add_experimental_option('useAutomationExtension', False)browser = webdriver.Chrome(options=option)browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})browser.maximize_window() # 窗口最大化# 這行代碼的作用是將webdriver這個(gè)屬性置為undefinedbrowser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})browser.get(url)time.sleep(2)num1 = random.randint(1, 2)if browser.find_element(by=By.XPATH, value=f"//div[@for='q1_{num1}']"):browser.find_element(by=By.XPATH, value=f"//div[@for='q1_{num1}']").click()time.sleep(0.5)num2 = random.randint(1, 3)if browser.find_element(by=By.XPATH, value=f"//div[@for='q2_{num2}']"):browser.find_element(by=By.XPATH, value=f"//div[@for='q2_{num2}']").click()time.sleep(0.5)num3 = random.randint(1, 3)if browser.find_element(by=By.XPATH, value=f"//div[@for='q3_{num3}']"):browser.find_element(by=By.XPATH, value=f"//div[@for='q3_{num3}']").click()time.sleep(0.5)num4 = random.randint(1, 3)if browser.find_element(by=By.XPATH, value=f"//div[@for='q4_{num4}']"):browser.find_element(by=By.XPATH, value=f"//div[@for='q4_{num4}']").click()time.sleep(0.5)num5 = random.randint(1, 2)if browser.find_element(by=By.XPATH, value=f"//div[@for='q5_{num5}']"):browser.find_element(by=By.XPATH, value=f"//div[@for='q5_{num5}']").click()time.sleep(0.5)num6 = random.randint(1, 3)if browser.find_element(by=By.XPATH, value=f"//div[@for='q6_{num6}']"):browser.find_element(by=By.XPATH, value=f"//div[@for='q6_{num6}']").click()time.sleep(0.5)num7 = random.randint(1, 4)if browser.find_element(by=By.XPATH, value=f"//div[@for='q7_{num7}']"):browser.find_element(by=By.XPATH, value=f"//div[@for='q7_{num7}']").click()time.sleep(0.5)# num8 = random.randint(1, 3)# if browser.find_element(by=By.XPATH, value=f"//div[@for='q8_{num8}']"):# browser.find_element(by=By.XPATH, value=f"//div[@for='q8_{num8}']").click()# time.sleep(0.5)# 問題5randomId = random.randint(1, 3) # 隨機(jī)數(shù)選擇(選多少個(gè))for i in range(1, randomId + 1): # 循環(huán) 實(shí)現(xiàn)多選效果randomId1 = random.randint(1, 3) # 隨機(jī)選擇第1到第6個(gè)選項(xiàng)之一# 兩種js實(shí)現(xiàn)方式j(luò)s = "document.getElementById(\"q8_" + str(randomId1) + "\").checked = true"browser.execute_script(js)# 延時(shí)time.sleep(1)num9 = random.randint(1, 7)if browser.find_element(by=By.XPATH, value=f"//div[@for='q9_{num9}']"):browser.find_element(by=By.XPATH, value=f"//div[@for='q9_{num9}']").click()time.sleep(0.5)num10 = random.randint(1, 3)if browser.find_element(by=By.XPATH, value=f"//div[@for='q10_{num10}']"):browser.find_element(by=By.XPATH, value=f"//div[@for='q10_{num10}']").click()time.sleep(0.5)if browser.find_element(by=By.XPATH, value="//div[@class='submitbtn mainBgColor']"):browser.find_element(by=By.XPATH, value="//div[@class='submitbtn mainBgColor']").click()time.sleep(1)try:element = browser.find_element(By.CSS_SELECTOR, "#alert_box > div:nth-child(2) > div:nth-child(2) > button")element.click()time.sleep(1)yanz = browser.find_element(By.ID, "rectMask")yanz.click()time.sleep(4)except:pass# 先點(diǎn)確認(rèn)try:browser.find_element(By.XPATH, '//*[@id="layui-layer1"]/div[3]/a[1]').click()time.sleep(1)except:pass# 再點(diǎn)智能驗(yàn)證提示框,進(jìn)行智能驗(yàn)證try:browser.find_element(By.XPATH, '//*[@id="SM_BTN_WRAPPER_1"]').click()time.sleep(3)except:pass# 滑塊驗(yàn)證pyautogui.moveTo(789, 805, duration=1) # 傳入屏幕的位置time.sleep(0.5)pyautogui.dragRel(370, 0, duration=0.8) # 拖動(dòng)# pyautogui.moveTo(789, 805, duration=1) # 回到原處# pyautogui.moveRel(370, 0, duration=1)# pyautogui.dragRel(256, 0, duration=0.8)# pyautogui.moveTo(789, 805)# time.sleep(0.5)# pyautogui.dragRel(370, 0, duration=0.8)time.sleep(5)browser.close()print(f"第{i + 1}份已經(jīng)完成")if __name__ == '__main__':num = 10 # 填的份數(shù)url = 'https://www.wjx.cn/vm/tXQkrbD.aspx' # 鏈接run(num, url)

以上代碼是我根據(jù)我自己的問卷形式來的,具體參數(shù)還得跟著問卷走,代碼親測(cè)有效,當(dāng)短時(shí)間內(nèi)刷的問卷數(shù)過多時(shí),可能會(huì)出現(xiàn)第二重智能驗(yàn)證,這就要手動(dòng)驗(yàn)證了哦,所以為了防止出現(xiàn)二重智能驗(yàn)證,在每提交完一份問卷后,要用time.sleep函數(shù)用于延時(shí) ,?避免提交過快。

本文僅為技術(shù)交流,最好不要用來惡意填寫別人的問卷,以造成問卷質(zhì)量低下的情況,請(qǐng)大家還是根據(jù)自己的實(shí)際情況填寫問卷哦。?

總結(jié)

以上是生活随笔為你收集整理的python实现问卷星自动填写(可以跳过智能验证)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。