Python實現問卷星自動填寫和選擇
啊哈哈哈,我朋友叫我幫他填寫問卷星,,我就直接寫了個python腳本幫他一次性解決
全隨機,全自動,一開始我用的是BP直接抓包發送,不過發送頻率過快會讓你驗證,,,
就很噁心,,問卷上一共有十五個問題,其實十四個,有個選擇不同會顯示不同問題
在書寫過程中遇見一個問題,多選框的選中,經歷多種摧殘,終於找到解決辦法:
randomId1 = random.randint(1, 7)
js = "document.getElementById(\"q11_" + str(randomId1) + "\").checked = true"
browser.execute_script(js)
js = "document.getElementById(\"q11_" + str(randomId1) + "\").click()"
browser.execute_script(js)
如上所述即可實現python選中複選框!!!
具體代碼如下,沒有任何技術可言,僅此記錄一下:
from selenium import webdriver
import time
import random
def run():
browser = webdriver.Chrome()
browser.get("https://www.wjx.cn/jq/80378706.aspx")
# 1
randomId = random.randint(1, 2)
js = "document.getElementById(\"q1_" + str(randomId) + "\").click()"
browser.execute_script(js)
time.sleep(1)
# 2
randomId = random.randint(1, 4)
js = "document.getElementById(\"q2_" + str(randomId) + "\").click()"
browser.execute_script(js)
time.sleep(1)
# 3
block = ["商學院", "計科院", "電氣院"]
randomId = random.randint(0, 2)
browser.find_element_by_id("q3").send_keys(block[randomId])
time.sleep(1)
# 4
block = ["會計", "網工", "電氣"]
browser.find_element_by_id("q4").send_keys(block[randomId])
time.sleep(1)
# 5
randomId = random.randint(1, 5)
for i in range(1, randomId + 1):
randomId1 = random.randint(1, 5)
js = "document.getElementById(\"q5_" + str(randomId1) + "\").checked = true"
browser.execute_script(js)
js = "document.getElementById(\"q5_" + str(randomId1) + "\").click()"
browser.execute_script(js)
time.sleep(1)
# 6
randomId = random.randint(1, 3)
for i in range(1, randomId + 1):
randomId1 = random.randint(1, 3)
js = "document.getElementById(\"q6_" + str(randomId1) + "\").checked = true"
browser.execute_script(js)
js = "document.getElementById(\"q6_" + str(randomId1) + "\").click()"
browser.execute_script(js)
time.sleep(1)
# 7
randomId = random.randint(1, 3)
for i in range(1, randomId + 1):
randomId1 = random.randint(1, 3)
js = "document.getElementById(\"q7_" + str(randomId1) + "\").checked = true"
browser.execute_script(js)
js = "document.getElementById(\"q7_" + str(randomId1) + "\").click()"
browser.execute_script(js)
time.sleep(1)
# 8
randomId = random.randint(1, 2)
js = "document.getElementById(\"q8_" + str(randomId) + "\").click()"
browser.execute_script(js)
time.sleep(1)
# 9
randomId = random.randint(1, 2)
js = "document.getElementById(\"q9_" + str(randomId) + "\").click()"
browser.execute_script(js)
time.sleep(1)
# 10
randomId = random.randint(1, 3)
js = "document.getElementById(\"q10_" + str(randomId) + "\").click()"
browser.execute_script(js)
time.sleep(1)
# 12
if randomId == 2:
randomId2 = random.randint(1, 6)
for i in range(1, randomId2 + 1):
randomId1 = random.randint(1, 6)
js = "document.getElementById(\"q12_" + str(randomId1) + "\").checked = true"
browser.execute_script(js)
js = "document.getElementById(\"q12_" + str(randomId1) + "\").click()"
browser.execute_script(js)
time.sleep(1)
# 11
else:
randomId2 = random.randint(1, 7)
for i in range(1, randomId2 + 1):
randomId1 = random.randint(1, 7)
js = "document.getElementById(\"q11_" + str(randomId1) + "\").checked = true"
browser.execute_script(js)
js = "document.getElementById(\"q11_" + str(randomId1) + "\").click()"
browser.execute_script(js)
time.sleep(1)
# 13
randomId = random.randint(1, 3)
js = "document.getElementById(\"q13_" + str(randomId) + "\").click()"
browser.execute_script(js)
time.sleep(1)
# 14
block = ["線上教學太生硬", "線上教學不太好", "沒有不足之處,挺好的"]
randomId = random.randint(0, 2)
browser.find_element_by_id("q14").send_keys(block[randomId])
time.sleep(1)
# 15
block = ["希望作業能多一點", "如果可以,希望老師能講課講清楚一些", "建議取消線上考試"]
randomId = random.randint(0, 2)
browser.find_element_by_id("q15").send_keys(block[randomId])
time.sleep(1)
# submit
js = "document.getElementById(\"submit_button\").click()"
browser.execute_script(js)
browser.quit() #運行完畢自動關閉瀏覽器
if __name__ == "__main__":
while True:
run()
time.sleep(10) #避免提交過快出現驗證
理論上還是不錯的!!大概30s就能填完一個,比一個一個叫人填快多了嘛