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就能填完一个,比一个一个叫人填快多了嘛