@python 实现问卷自动填写(用于刷数据)

python实现问卷网的自动填写详解

注:为保证问卷结果的真实性和质量,如果不是特殊需要,建议不要使用特殊方法刷数据

环境

  1. 语言 :python;
  2. 浏览器:Google Chrome
  3. 问卷来源:问卷网

前期准备

1.首先针对谷歌浏览器

在windows下配置chromedriver

具体原因可以参考文章后的链接,这里只是说一下简单的步骤
1.打开谷歌浏览器查看版本

2.下载对应版本的chromedriver
下载地址


3.解压
这里有两种方法
方法一是解压到python的scripts文件夹下(比较建议,因为我就是用的这种方法)
方法二是解压到任意位置
4.测试
完成以上三个步骤后

#解压方法用法一的测试程序
from selenium import webdriver #没有selenium库的 需要装一个
driver=webdriver.Chrome()
#法二测试程序
from selenium import webdriver #没有selenium库的 需要装一个
driver=webdriver.Chrome(executable_path=r"你的driver路径")

成功后
运行会打开谷歌浏览器并出现

python代码部分

from selenium import webdriver
import random #用于产生随机数
import time #用于延时
#准备工作
option = webdriver.ChromeOptions()
option.add_argument('headless')
url = 'https://www.wenjuan.com/s/UZBZJvpi6w/' #此处为你要填写的问卷网 问卷的地址
num = 200  # 设置提交问卷次数#主要程序
for times in range(num):
#打开网页driver = webdriver.Chrome() #此处使用chromedriver解压在python的scripts文件夹下的方法driver.get(url)#获取问卷信息 questions = driver.find_elements_by_css_selector('.matrix')#便利每个问题  index为(从0开始) 题目序号 第一题index=0for index,answers in enumerate(questions):# 所有问卷问题选项answer = answers.find_elements_by_css_selector('.icheckbox_div')# 填空选项,并填入相关内容if not answer:blank_potion = answers.find_element_by_css_selector('.blank.option')blank_potion.send_keys('无') #此处 “无” 为填写信息continue#根据问卷的题目规定和预期结果  例如:1,2,4,5,6,7,8 为单选# 单选题处理if index == 0 or index == 7 :choose_ans = answer[random.randint(0, 2)] #在前三个选项中随机选择一个choose_ans.click() #相当于点击事件time.sleep(random.randint(0, 1)) #随机一个延时 以免操作过快 影响问卷的质量elif index==3:choose_ans = answer[random.randint(0, 3)]choose_ans.click()time.sleep(random.randint(0, 1))elif index == 5 or index == 6 :choose_ans = answer[random.randint(0, 2)]choose_ans.click()time.sleep(random.randint(0, 1))elif index == 1 :choose_ans = answer[random.randint(0, 3)]choose_ans.click()time.sleep(random.randint(0, 1))elif index == 4 :choose_ans = answer[random.randint(0, 2)]choose_ans.click()time.sleep(random.randint(0, 1))# 多选题处理#四选二模式   该思想可用于互斥项elif index ==2:choose_ans = answer[random.randint(0, 1)]#前两个里面选一个choose_ans.click()time.sleep(random.randint(0, 1))choose_ans = answer[random.randint(2, 3)]#后两个里选一个 可随机应变choose_ans.click()time.sleep(random.randint(0, 1))#随机多选 存在缺陷elif index ==9:for i in range(1, random.randint(3, 4)): #随机选则两个或三个   或一个!choose_ans = answer[random.randint(0, 3)]choose_ans.click()time.sleep(random.randint(0, 1))#分析 当随机选择三个时,有可能三个选项随机数中有两个相同#这时相当于点击两次 没有做选则 所以结果只剩一个#同理 当随机选则两个时,可能存在不做选择的情况 若为必填题 则不能提交#改进 仍有不足 不会出现偶数个选择项elif index == 8:for i in range(1,8):choose_ans = answer[random.randint(0, 6)]choose_ans.click()time.sleep(random.randint(0, 1))#同上理 此时选项个数为 1或3或5或7  subumit_button = driver.find_element_by_css_selector('#next_button') #获取提交按钮#每个问卷网的提交按钮的获取不同 该方法为 问卷网 问卷提交按钮获取方法subumit_button.click() #点击提交事件print('已经为您提交了{}次问卷'.format(int(times) + int(1)))time.sleep(4)  # 延迟问卷结果提交时间,以免间隔时间太短而无法提交driver.quit()# 退出 关闭网页

总结

本文讲解用python进行对问卷网问卷的自动填写的具体操作步骤

PS:

问卷星有智能识别比较麻烦
chromedriver的配置有问题的话,这里提供一个参考链接
链接

python实现问卷网的自动填写详解相关推荐

  1. Python处理excel-根据全称自动填写简称

    Python处理excel-根据全称自动填写简称 在工作中处理excel遇到需要根据器件生产供应商全称填写简称的一列,由于数据表格中器件数多达几万条,单纯靠excel筛选功能手动处理需要耗费大量时间, ...

  2. Python中的__name__和__main__含义详解

    背景 在写Python代码和看Python代码时,我们常常可以看到这样的代码: ? 1 2 3 4 5 def main():     ...... if __name__ == "__ma ...

  3. pycharm导入python环境是空的_PyCharm导入python项目并配置虚拟环境的教程详解

    PyCharm导入python项目并配置虚拟环境的教程详解 进入PyCharm后,点击File→Open,然后在弹窗中选择需要导入项目的文件夹: 打开了python项目后,需要配置该项目对应的pyth ...

  4. python菜单怎么做_Python 城市菜单详解(超详解)

    print("--------城市查询系统---------") print("--------按数值进行查询--------") menu={"内蒙 ...

  5. 使用python代码给手机发短信详解(twilio的使用)

    ☞☞☞点击查看更多优秀Python博客☜☜☜ 使用python代码给手机发短信详解 twilio网页注册 实现代码 效果演示 ==**文章导航:==** 使用python代码给手机发送短信,在这里给大 ...

  6. python gil 解除_详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案

    先看一道GIL面试题: 描述Python GIL的概念, 以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因. GIL:又叫全局解 ...

  7. Python爬虫教程:Python爬取京东商城商品大图详解

    Python爬取京东商城商品大图详解 做为一个爬虫初学者,在做爬取网址图片的练习中以京东网为例爬取商品大图并保存在相应的文件夹 1.导入模块 import urllib.request import ...

  8. python协程详解_对Python协程之异步同步的区别详解

    一下代码通过协程.多线程.多进程的方式,运行代码展示异步与同步的区别. import gevent import threading import multiprocessing # 这里展示同步和异 ...

  9. db2数据备份到mysql_DB2数据库自动备份详解

    DB2数据库自动备份详解 由脱机备份转换为联机备份: 在db2CMD下执行 1.连接需要备份的数据库:db2 connect to数据库名称 2.修改自动数据库备份(AUTO_DB_BACKUP)参数 ...

  10. python labelencoder参数_对python 数据处理中的LabelEncoder 和 OneHotEncoder详解

    python 怎么读取 Label 里面的值 #简单来说 LabelEncoder 是对不连续的数字或者文本进行编号 from sklearn.preprocessing import LabelEn ...

最新文章

  1. TensorFlow学习笔记之五——源码分析之最近算法
  2. eclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法
  3. 应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序
  4. h5实现手机端等级进度条
  5. 零代码实战 SharePoint 2013 BCS:三、实干篇
  6. Linux通常把设备对象抽象为,linux 设备模型(1)
  7. Redis缓存穿透、缓存击穿和缓存雪崩
  8. org.hibernate.InvalidMappingException: Could not parse mapping document from resource
  9. java社区活跃度_Java并发编程-活跃度问题
  10. linux用于电脑,适用于 Linux的Windows子系统正在获得这些有用的新功能的介绍
  11. 棋牌游戏服务器设计(1)
  12. PROTEL技术应用技巧总结
  13. .net core在线考试系统源码
  14. 利用vbs 运行程序 并使窗口隐藏
  15. 软件测试面试题:软件验收测试包括正式验收测试、alpha测试、beta测试三种测试?
  16. 【Hibernate步步为营】--映射合集汇总
  17. sql注入危害利用及防护详解+sqlmap使用
  18. 小工具,大作用:教你如何利用EXCEL函数LINEST做回归分析
  19. 我的功放和你们用的功放芯片的SD_MUTE脚电平不一样_该如何处理
  20. post和get传参(重点)

热门文章

  1. Android MVP开发框架
  2. 半导体的PN结及其基本特性
  3. druid监控页面SQL不显示问题
  4. Python期末考试题库
  5. 远程桌面连接时无法访问远程计算机的计算机属性提示系统调用失败,远程过程调用失败【应对技巧】...
  6. java实现日历打印
  7. Closures in OOC
  8. ctfshow--ssrf
  9. 最详细bugku杂项小白解法(1~24已完结)
  10. NB-IOT相关的术语 SGW、PGW、LTE、RRC、E-UTRAN、EPC