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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

最近有一個社會實踐需要做問卷調查,突發奇想搞一個自動化腳本,省事省米

1?下載依賴selenium

selenium是一款網頁爬蟲重要的工具。

2? 安裝chrome驅動

這里需要準備chrome瀏覽器以及對應的驅動。需要注意的是驅動的版本需要和chrome保持一致。
chrome瀏覽器版自行查看本機安裝版本。

chrome驅動下載鏈接?chrome驅動鏈接找到對應版本的驅動。?

?

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

?

??3 導入相關的包

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

防止被識別為腳本

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這個屬性置為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自動化填問卷星.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這個屬性置為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) # 隨機數選擇(選多少個)for i in range(1, randomId + 1): # 循環 實現多選效果randomId1 = random.randint(1, 3) # 隨機選擇第1到第6個選項之一# 兩種js實現方式js = "document.getElementById(\"q8_" + str(randomId1) + "\").checked = true"browser.execute_script(js)# 延時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# 先點確認try:browser.find_element(By.XPATH, '//*[@id="layui-layer1"]/div[3]/a[1]').click()time.sleep(1)except:pass# 再點智能驗證提示框,進行智能驗證try:browser.find_element(By.XPATH, '//*[@id="SM_BTN_WRAPPER_1"]').click()time.sleep(3)except:pass# 滑塊驗證pyautogui.moveTo(789, 805, duration=1) # 傳入屏幕的位置time.sleep(0.5)pyautogui.dragRel(370, 0, duration=0.8) # 拖動# 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}份已經完成")if __name__ == '__main__':num = 10 # 填的份數url = 'https://www.wjx.cn/vm/tXQkrbD.aspx' # 鏈接run(num, url)

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

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。