多种课程需要问卷,奈何本人朋友少。幸好最近刚学了python,便试着做了一下自动填问卷。现只做出了仅限于全是单选题的问卷(当时时间紧任务重,便没有尝试做多选题)废话不多说,直接上代码:
from selenium import webdriver
import time
from numpy import *
#获得问卷问题并调用selecta()方法进行自动选择
def getasknum(driver):
asknum=driver.find_elements_by_xpath("//div[contains(@id,'divquestion')]")
for i in range(len(asknum)):
selecta(i)
#基于问题选项个数获得一个随机数
def getsjs(number):
number+=1
renum=random.randint(1,number)
return renum
def selecta(num):
num+=1
arel="//a[contains(@rel,"+"'q"+str(num)+"_"+"')]"
anum=driver.find_elements_by_xpath(arel)
#调用getsjs()方法并模拟点击选择这个选项
selectnum=getsjs(len(anum))
aselrel="//a[contains(@rel,"+"'q"+str(num)+"_"+str(selectnum)+"')]"
element=driver.find_element_by_xpath(aselrel)
element.click()
#模拟点击提交按钮
def reg(driver):
btn_reg=driver.find_element_by_id('submit_button')
btn_reg.click()
#设置循环填写次数
for i in range(1,3):
driver=webdriver.Chrome()
url="https://www.wjx.cn/jq/49231227.aspx";
driver.get(url)
getasknum(driver)
reg(driver)
driver.close()
#由于问卷星填写过快会有验证码设置一个等待时间
time.sleep(10)
在配置环境的时候注意chromedriver的配置。这里给一个参考链接:windows下配置chromedriver
由于操作过频繁问卷星会跳出验证码,自动填写验证码部分还在研究中……为了使做出来的数据更具真实性,可以在选择选项的时候加入正态分布等更具统计学意义的选择,上方代码为完全随机选择。
end