利用简单权重设置选项比例分配以及条件判断语句即可将问卷往你选择的放向走,需要对前端稍微了解即可,用谷歌的开发者工具查看元素

例如:check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")

from selenium import webdriver
import random
import time
import numpy as np
#pip install selenium==4.8.0 最新版本模块
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver import ActionChainsdef get_ele_time(driver,time,func):WebDriverWait(driver,time).until(func)
def auto_write():# 防止被浏览器识别为脚本# 需要谷歌版本 109.0.5414.120(正式版本) (64 位),否则可能会报错chrome_options = Options()chrome_options.add_argument("--disable-blink-features=AutomationControlled")chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])chrome_options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36')driver = Chrome(options=chrome_options)#这里需要你写下你的问卷星的网址进行调研虫,例如我们的问卷driver.get('https://www.wjx.cn/vm/OpWPWY1.aspx#')# print('=============================================================')# 获取到所有题目的选项rank = driver.find_elements(by=By.CLASS_NAME,value="field.ui-field-contain")mins=0mins_one=0mins_two=0mins_three=0mins_four=0mins_five=0mins_six=0mins_seven=0mins_eight=0mins_night=0# print(len(rank))for i in range(0,len(rank)):type_q = rank[i].get_attribute("type")# print(type_q)# 单选if(type_q == '3'):if(i==15):check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")mins = random.randint(0,len(check)-2)# print(type(check))check[mins].click()# check='null'elif(i==0):check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")alist = [0, 1]weight = [0.6,0.4]choiceNum = random.choices(alist, weights=weight)mins = choiceNum[0]check[mins].click()# flag=True# check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")# # print(type(check))# while(flag):#     mins = random.randint(0,len(check)-1)#     # print(mins)#     if(mins==1 or mins==2):#         flag=True#         # mins = random.randint(0,len(check)-1)#         # check[mins].click()#     else:#         check[mins].click()#         flag=Falseelif(i==1):check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")#利用权重对选项进行选择alist = [0, 1, 2, 3, 4, 5]weight = [0,0,0.5,0.35,0.15,0]choiceNum = random.choices(alist, weights=weight)mins_one = choiceNum[0]check[mins_one].click()elif(i==2):check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")alist = [0, 1, 2, 3, 4]weight = [0.2,0.5,0.3,0,0]choiceNum = random.choices(alist, weights=weight)mins_two = choiceNum[0]check[mins_two].click()elif(i==3):check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")print(mins_one)if(mins_one==2):alist = [0, 1, 2, 3, 4,5,6,7]weight = [0,0.28,0.2,0.38,0.12,0.02,0,0]choiceNum = random.choices(alist, weights=weight)mins_three = choiceNum[0]check[mins_three].click()if(mins_one==3):alist = [0, 1, 2, 3, 4,5,6,7]weight = [0,0.2,0.36,0.24,0.18,0.02,0,0]choiceNum = random.choices(alist, weights=weight)mins_three = choiceNum[0]check[mins_three].click()if(mins_one==4):alist = [0, 1, 2, 3, 4,5,6,7]weight = [0,0.2,0.36,0.24,0.18,0.02,0,0]choiceNum = random.choices(alist, weights=weight)mins_three = choiceNum[0]check[mins_three].click()elif(i==4):check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")if(mins_three==1):alist = [0, 1, 2, 3, 4,5,6]weight = [0,0.05,0.15,0.4,0.3,0.05,0.05]choiceNum = random.choices(alist, weights=weight)mins_four = choiceNum[0]check[mins_four].click()if(mins_three==2):alist = [0, 1, 2, 3, 4,5,6]weight = [0.02,0.1,0.2,0.4,0.3,0.1,0.1]choiceNum = random.choices(alist, weights=weight)mins_four = choiceNum[0]check[mins_four].click()if(mins_three==3):alist = [0, 1, 2, 3, 4,5,6]weight = [0,0.05,0.2,0.4,0.3,0.1,0.1]choiceNum = random.choices(alist, weights=weight)mins_four = choiceNum[0]check[mins_four].click()if(mins_three==4):mins_four=random.randint(0,6)check[mins_four].click()if(mins_three==5):mins_four=0check[mins_four].click()if(mins_three==6):mins_four=random.randint(0,1)check[mins_four].click()if(mins_three==7):mins_four=random.randint(0,6)check[mins_four].click()elif(i==5):check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")if(mins==1):alist = [0, 1, 2, 3, 4,5,6,7,8]weight = [0.05,0.02,0.1,0.05,0.2,0.3,0.05,0.05,0.08]choiceNum = random.choices(alist, weights=weight)mins_five = choiceNum[0]check[mins_five].click()if(mins==0):alist = [0, 1, 2, 3, 4,5,6,7,8]weight = [0.12,0.3,0.12,0.12,0.1,0,0.12,0.1,0.02]choiceNum = random.choices(alist, weights=weight)mins_five = choiceNum[0]check[mins_five].click()elif(i==6):check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")alist = [0, 1, 2, 3, 4]weight = [0.45,0.1,0.05,0.2,0.2]choiceNum = random.choices(alist, weights=weight)mins_six= choiceNum[0]check[mins_six].click()elif(i==7):check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")alist = [0, 1, 2, 3, 4]weight = [0.3,0.4,0.15,0.1,0.05]choiceNum = random.choices(alist, weights=weight)mins_seven= choiceNum[0]check[mins_seven].click()elif(i==8):check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")if(mins_seven==0):mins_eight=random.randint(0,4)check[mins_eight].click()if(mins_seven==1):mins_eight=random.randint(1,4)check[mins_eight].click()if(mins_seven==2):mins_eight=random.randint(2,4)check[mins_eight].click()if(mins_seven==3):mins_eight=random.randint(3,4)check[mins_eight].click()if(mins_seven==4):mins_eight=4check[mins_eight].click()elif(i==9):check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")alist = [0, 1, 2, 3, 4]weight = [0.01,0.6,0.3,0.07,0.02]choiceNum = random.choices(alist, weights=weight)mins_night= choiceNum[0]check[mins_night].click()                    #     多选if(type_q == '4'):ui_check = rank[i].find_elements(by=By.CLASS_NAME,value="label")length = len(ui_check)# print(length)for k in range(len(ui_check)):# 如果多选中填空题选项不叫其他,请更改此行代码if ui_check[k].text == '其他':length = length-1# 如果多选规定选择的项数请修改下面的random_choice = np.random.randint(0,length,size=random.randint(1,length))for z in list(set(random_choice)):ui_check[z].click()#         量表if(type_q == '5'):lb_data = rank[i].find_elements(by=By.CLASS_NAME,value="td")lb_data[random.randint(0,len(lb_data)-1)].click()#     矩阵量表if(type_q == '6'):# print(rank[i].text)if(i==13):mat_data = rank[i].find_elements(by=By.CSS_SELECTOR,value="tr[tp=d]")# print(len(mat_data))# mat_data = rank[i].find_elements_by_xpath("./tbody/tr[@tp=\"d\"]")for s in range(0,len(mat_data)):single_mat_row = mat_data[s].find_elements(by=By.CLASS_NAME,value='rate-off.rate-offlarge')# print(len(single_mat_row))# check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")alist = [0, 1, 2, 3, 4]weight = [0.5,0.3,0.3,0.15,0.05]choiceNum = random.choices(alist, weights=weight)[0]single_mat_row[choiceNum].click()elif(i==14):mat_data = rank[i].find_elements(by=By.CSS_SELECTOR,value="tr[tp=d]")# print(len(mat_data))# mat_data = rank[i].find_elements_by_xpath("./tbody/tr[@tp=\"d\"]")for s in range(0,len(mat_data)):single_mat_row = mat_data[s].find_elements(by=By.CLASS_NAME,value='rate-off.rate-offlarge')# print(len(single_mat_row))# check = rank[i].find_elements(by=By.CLASS_NAME,value="ui-radio")alist = [0, 1, 2, 3, 4]weight = [0.05,0.15,0.3,0.3,0.5]choiceNum = random.choices(alist, weights=weight)[0]single_mat_row[choiceNum].click()else:mat_data = rank[i].find_elements(by=By.CSS_SELECTOR,value="tr[tp=d]")# print(len(mat_data))# mat_data = rank[i].find_elements_by_xpath("./tbody/tr[@tp=\"d\"]")for s in range(0,len(mat_data)):single_mat_row = mat_data[s].find_elements(by=By.CLASS_NAME,value='rate-off.rate-offlarge')# print(len(single_mat_row))alist = [0, 1, 2, 3, 4]weight = [0.05,0.15,0.3,0.5,0.7]choiceNum = random.choices(alist, weights=weight)[0]# single_mat_row[choiceNum].click()single_mat_row[choiceNum].click()driver.find_element(by=By.ID,value="ctlNext").click()# XPATH='//*[@id="layui-layer1"]/div[3]/a[1]'# 消除确认弹窗time.sleep(random.randint(2, 5))# js = 'document.getElementById("alert_box").style.display="none";'driver.find_element(by=By.CLASS_NAME,value="layui-layer-btn0").click()# time.sleep(0.5)time.sleep(random.randint(3, 7))# driver.execute_script(js)# 点智能验证提示框,进行智能验证driver.find_element(by=By.XPATH,value="//div[@id='rectMask']").click()time.sleep(random.randint(2, 15))driver.quit()  # 运行完毕自动关闭浏览器# driver.quit()if __name__ == '__main__':for i in range(1,1001):print("正在填写第{}份问卷".format(i))auto_write()print("第{}份问卷已经填写完成".format(i))time.sleep(random.randint(2,6))#此处需要停留20分钟,建议晚上挂机刷问卷if(i%20==0):time.sleep(1200)

最后的结果:

问卷星最新调研爬虫自动填写相关推荐

  1. python填写问卷星_使用Python自动填写问卷星(pyppeteer反爬虫版)

    from selenium importwebdriverimporttimeimportrandomdefrun(): browser=webdriver.Chrome() browser.get( ...

  2. 前端js自动填写 点击_爬虫自动填写学生健康打卡表

    最近由于是特殊时期,这个寒假无比漫长.在开学前夕,许多学校要求学生每天打卡自己的健康情况. 一开始的时候,我是用selenium驱动浏览器帮助自己填写每天的健康状况,并做了一套web程序,可供学校的其 ...

  3. 记录一个python小白写问卷星定时答题代码的过程

    萌生想法的原因 学校的一些学分要自己抢公众号的活动修满的,要蹲点等公众号发的定时问卷开始填写,几乎秒没. 每次和舍友一起抢,发现大家手速网速各有不同,最后几家欢喜几家愁. 于是萌生了想法--通过代码解 ...

  4. python问卷星模拟提交

    *一.前言 ** 笔者在家闲得无聊,突然想突破一下问卷星的反爬虫机制,顺便刷刷问卷,于是就开始分析了. ** 二.分析过程 ** 1.fiddler抓包 模拟提交首先当然是打开fiddler看看提交了 ...

  5. Python爬虫拓展应用:最新版本问卷星自动刷,包括解决智能验证、滑块等问题

    Python爬虫拓展应用: 最新版本问卷星自动刷,包括:解决智能验证.滑块等问题 Python爬虫自动刷"问卷星"网站问卷 爬虫运行准备 爬虫运行代码 代码解释 参考博客 Pyth ...

  6. python爬虫之自动填写问卷星调查表

    系列文章目录 python爬虫之自动填写问卷星调查表 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一.python爬虫填写问卷星 二.使用步骤总结 ...

  7. python爬取问卷星内容,Python 问卷星自动填写 爬虫

    Python帮你填问卷星 ps:网上看到的代码,虽然技术不深,但我觉得挺有用的,所以在此分享给大家 在某段时间朋友圈是否一直充斥着各种问卷调查,为了达成某种要求我们不断向好友求助填写问卷,今天,我就把 ...

  8. Python实现问卷星调查问卷自动填写

    文章目录 前言 一.配置环境 1.1 下载依赖selenium 1.2 安装chrome驱动 1.3 引入库 二.简易版快速上手教程 1.自定义变量 2.自定以函数 3 主函数编写 三 逐步解析 1 ...

  9. 还在为写调查问卷发愁的你赶快来看看这个自动填写问卷(问卷星版)

    一.背景 马克思实践报告需要,由于并不是需要严谨深入的研究调查,因此想到使用自动填写来完成,于是打开pycharm开整吧. 二.实现过程 chromedriver+selenium填写(可以进行填写, ...

最新文章

  1. Java项目:中小医院信息管理系统(java+Springboot+ssm+mysql+maven+jsp)
  2. 中止取消ajax请求,IE7下的bug解决
  3. 芙蓉之约 , Serverless 技术实践营 3.25 成都站邀你来参加
  4. 改造Cobol项目应该注意的几个问题
  5. *PAT_B_1030_Java(22分)_C++(25分)
  6. 自然语言理解——introduction
  7. shell 25个常用命令
  8. 1-VVI-材料设计之-TabLayout上标签
  9. 自定义控件:属性为控件需要注意的地方
  10. Treeview的文件目录配置
  11. 设计模式学习笔记-装饰模式
  12. opnet安装的问题
  13. 2018 python视频教程-自学python,怎能少得了教程
  14. mysql 获取农历年份_ASP获取农历日期程序代码
  15. 为什么现在的程序员那么卑微?青出于蓝而胜于蓝啊
  16. PAT乙级10015题——C语言
  17. linux 6 dns,RHEL6下搭建DNS服务器
  18. php让浏览器全屏,H5实现浏览器全屏API(全屏进入和全屏退出)
  19. canvas绘制文本文本的
  20. 北斗短报文一体机-Qt版(适用于Ubuntu和Windows)

热门文章

  1. Netty框架之网络通信入门程序~helloWorld
  2. Git实战视频教程-王利涛-专题视频课程
  3. 理解 Git 分支管理最佳实践
  4. Paxos分布式系统共识算法?我愿称其为点歌算法…
  5. java slf4j log4j_SLF4J和log4j的使用
  6. 博客虚拟主机的购买技巧
  7. 机械设计制造及其自动化专业向PLC方向发展的可行性
  8. Unity 实现物体破碎效果(转)
  9. js:数组对象按key值进行升序降序排序
  10. 能够努力学习的三大原因