【python】自动填写问卷星问卷及提交

前言:问卷是很好的网络调查方式之一,近年来,问卷星被广泛应用于各方面的调查。本文介绍了利用python代码自动填写问卷星基本题目,拥有自动填写、解决智能验证、批量提交问卷等功能。


 目录

1.下载浏览器驱动

2. selenium基本配置

 导入相关的包

实例化一个启动参数对象

其他设置 

设置驱动程序

3.答题代码

获取问卷内容

单选题

多选题

填空题

4.提交+智能验证

5.主函数


1.下载浏览器驱动

        python自动化填写问卷需要依赖浏览器驱动,这里使用的是谷歌浏览器,所以需要下载chromedriver,且下载的版本要和浏览器版本一致。

首先打开谷歌浏览器,点击“帮助”——“关于Google Chrome”,查看浏览器版本。如图:

 

 查看完版本后打开链接:CNPM Binaries Mirror下载对应系统对应版本的谷歌浏览器驱动。如图:

下载完成后会得到chromedriver.exe文件,此时将其复制到python工程目录文件夹中的venv文件夹中的Scripts文件夹下,如图:

2. selenium基本配置

       selenium本质是通过驱动浏览器,完全模拟浏览器的操作,就像真正的用户在操作一样。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。selenium库可以通过终端命令pip install selenium安装。

 导入相关的包

import random          # 用于产生随机数
import time            # 用于延时
from selenium.webdriver.common.by import By      #导入By包进行元素定位
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

实例化一个启动参数对象

#实例化一个启动参数对象
chrome_options = Options()#添加启动参数
chrome_options.add_argument('user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"')  # 添加请求头
chrome_options.add_argument('--disable-blink-features=AutomationControlled')# 防止被识别
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])     #设置开发者模式启动

其他设置 

chrome_options.add_experimental_option('useAutomationExtension', False)    # 关闭selenium对chrome driver的自动控制chrome_options.maximize_window()      # 网页最大化#chrome_options.add_argument('headless')    #设置浏览器以无界面方式运行

设置驱动程序

browser = webdriver.Chrome(options=chrome_options)     #设置驱动程序,启动浏览器  (实现以特定参数启动)
browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})       #用来执行Chrome开发这个工具命令

3.答题代码

定义一个run方法,并往方法里面添加内容。

获取问卷内容

browser.get('https://www.***.**/**/*****.aspx')        # 获取问卷信息(此处填问卷链接)

单选题

    # 问题1的点击 (性别)randomId = random.randint(1, 2)       # 随机点击第一个选项或第二个选项#js实现方式js = "document.getElementById(\"q1_" + str(randomId) + "\").checked = true"browser.execute_script(js)         #使用js实现点击的效果(调用js方法,同时执行javascript脚本)js = "document.getElementById(\"q1_" + str(randomId) + "\").click()"browser.execute_script(js)         #使用js实现点击的效果(调用js方法,同时执行javascript脚本)# 延时 太快会被检测是脚本time.sleep(1)# 问题2    (年龄)randomId = random.randint(2, 4)   # 随机数,5个多选框 随机点击# js实现方式js = "document.getElementById(\"q2_" + str(randomId) + "\").checked = true"browser.execute_script(js)js = "document.getElementById(\"q2_" + str(randomId) + "\").click()"    # 拼接字符串的方式 js找到对应id 点击按钮browser.execute_script(js)# 延时time.sleep(0.1)

多选题

    # 问题5    randomId = random.randint(1, 3)       # 随机数选择(选多少个)for i in range(1, randomId + 1):       # 循环 实现多选效果randomId1 = random.randint(1, 6)   #随机选择第1到第6个选项之一# 两种js实现方式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)

填空题

# 问题25#自定义要填的内容block = ["定义第1个填空","定义第2个填空","定义第3个填空","定义第4个填空","定义第5个填空","定义第6个填空","无"]  #在上述内容中随机选择一个填入randomId = random.randint(0, 5)          #(数值下标从0开始)#在题目中随机输入上述内容browser.find_element_by_id("q25").send_keys(block[randomId])    # 延时time.sleep(0.1)

4.提交+智能验证

首先查看问卷源代码,并复制“提交”按钮的xpath,如图:

    #点击提交submit = browser.find_element_by_xpath("//*[@id='ctlNext']")    #网页源代码的xpathsubmit.click()      #点击#延时 太快会被检测是脚本time.sleep(0.5)
    # 模拟点击智能验证按钮# 先点确认browser.find_element(By.XPATH,"//button[text()='确认']").click()time.sleep(1)# 再点智能验证提示框,进行智能验证browser.find_element_by_xpath("//div[@id='captcha']").click()

5.主函数

if __name__ == "__main__":#批量提交问卷for i in range(10):          #运行一次提交10份问卷run()time.sleep(5)  # 避免提交过快 会出现验证

以上代码亲测有效,当短时间内刷的问卷数过多时,可能会出现第二重智能验证,这就要手动验证了哦,所以为了防止出现二重智能验证,在每提交完一份问卷后,要用time.sleep函数用于延时 , 避免提交过快。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/44954.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用GoogleTampermonkeyModify Headers实现问卷星调查问卷的自动填写提交

前言 首先一个月没有更新博客,是因为去苏州尝试了一下暑假工,然后对于大家在博客留下的评论和问题也没有来得及回复,实在不好意思。不得不说,暑假工挺累的,而且基本上在消磨时间,说实话也不算后悔&#xf…

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

文章目录 前言一、配置环境1.1 下载依赖selenium1.2 安装chrome驱动1.3 引入库 二、简易版快速上手教程1.自定义变量2.自定以函数3 主函数编写 三 逐步解析1 基础代码2 实现步骤 四 代码总结 前言 如何使用python实现对问卷的自动填写提交任务并且还能解决智能验证问题。 一、…

Mac 软件出现「意外退出」及「打不开」解决方法

解决方法 方法其实有很多种,这里介绍常用的几种 终端法需先安装Xcode或Apple命令行工具 如未装Xcode可以使用下列命令安装Apple命令行工具(如安装有Xcode可忽略) xcode-select --install 1.终端法 sudo codesign --force --deep --sign -…

postman能正常打开但不显示窗口

1.最近使用postman偶尔出现以下问题 postman在任务栏能正常打开,如下图,使用AltTab也能看到,但是窗口就是显示不了 2.解决方案 将鼠标放在任务栏上,使用快捷键Alt空格,弹出小窗口,然后点击弹框中的最大化…

MPAndroidChart的HorizontalBarChart数值显示不全问题

现在使用的版本是:v3.1.0 方案一: private HorizontalBarChart hor_bar_chart; hor_bar_chart(HorizontalBarChart) findViewById(R.id.hor_barchart); YAxis leftYAxishor_bar_chart.getAxisLeft(); // 设置y轴边距,解决数值过大显示不全问…

解决 echarts 图中 tooltip 文本内容太长导致显示不全

问题: 使用 tooltip 的 extraCssText,高效方便 tooltip: {show:true,trigger: "axis",confine: true, // 文本太长自动换行extraCssText: white-space: normal; word-break: break-all;, // 文本太长自动换行效果:

CoordinatorLayout显示不全问题

问题一 <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"android:layout_width"match_parent"android:layout_height&…

在html中页面不全,网页显示不全,教您网页显示不全怎么办

当我们在电脑系统中使用IE浏览器浏览网页时&#xff0c;偶尔会出现是否只查看安全内容的提示&#xff0c;甚至有可能会出现页面显示不全的情况。一般遇到这种情况会选择继续查看网页内容&#xff0c;怎么去处理&#xff1f;下面&#xff0c;小编给大家介绍网页显示不全的解决步…

CSS问题:导航栏设置通栏后,放大页面背景显示不全

问题描述&#xff1a; 正常显示时&#xff1a;将网页放大到150%后&#xff1a; 解决办法&#xff1a; 当导航栏设置为width:100%或不给宽&#xff0c;是相当于当前文档流而言的&#xff0c;也就是浏览器窗口的大小。 此时假设浏览器窗口大小为1000px&#xff0c;那么这个通栏…

关于小程序 input 组件内容显示不全(显示的长度不满 input 宽度)问题

今天在做表单的提交&#xff0c;其中input框出现了一个诡异的问题&#xff0c;就是内容显示不全&#xff08;显示的长度不满 input 宽度&#xff09;&#xff0c;用前愆訾的文章解决&#xff0c;地址http://www.cnblogs.com/miu-key/p/7168933.html。感谢博主~ 转载自&#xff…

wkwebview html5页面,WKWebView h5 页面显示不全问题

WKWebView h5 页面显示不全问题 首先先来看一下效果图如下所示: 1.png 2.png 图 1 下面的分享按钮只显示出一点, 当时想出现这样的 bug 无外乎两点 1.h5 那边设备兼容问题 2.ios 这边显示问题, 问了 h5, 说是直接加载底部的 CSS 样式, 安卓那边显示 OK, 最后看了 h5 的代码也没…

html玩游戏显示不全,客户端登录界面显示不全解决办法

《新天堂II》客户端登录界面显示不全解决办法 在登录《新天堂II》游戏过程正&#xff0c;如果您出现客户端TCLS 界面显示不完全问题&#xff0c;请按照以下步骤设置&#xff0c;进行解决。 双击游戏图标后&#xff0c;出现登录界面显示不完全&#xff0c;如下图&#xff0c;玩家…

layUI的页面显示不全解决方法

在做项目时页面显示不全 可以在layui的css中直接改属性 layui-tab-item 找到这个属性&#xff0c;直接修改高度&#xff0c;如果是谷歌浏览器的话记得清缓存。 还有就是在嵌入时修改属性 <iframe scrolling"no" frameborder"0" src" " wid…

昆仑万维CEO方汉:AIGC以低成本达到80分水平,腰部工作者将大概率被淘汰 | 中国AIGC产业峰会...

丰色 发自 凹非寺量子位 | 公众号 QbitAI “如果人类的水平达不到80分&#xff0c;就会被AI淘汰。” 在中国AIGC产业峰会现场&#xff0c;昆仑万维CEO方汉抛出这样一个大胆预测。 在他看来&#xff0c;目前AIGC对存量知识的理解与表达已经达到80分的水平&#xff0c;行业从业者…

《扬帆优配》交易拥挤度达历史极值 当前A股TMT板块性价比几何?

上周&#xff0c;A股商场企稳&#xff0c;但盘面风格分歧再度加深&#xff1a;很多资金涌入以ChatGPT、数字经济为代表的TMT板块&#xff0c;而新能源以及前期强势的“中字头”种类都呈现了回调。兴业证券计算显现&#xff0c;3月24日&#xff0c;TMT及电子板块的商场成交金额占…

当初急吼吼冲进来的老王们,已经撤了……撤了……

* * * 原创&#xff1a;刘教链 * * * 号外&#xff1a;今天在“刘教链Pro”发表了《内参&#xff1a;为何要在31k对15k后悔莫及&#xff1f;》&#xff0c;欢迎关注公众号“刘教链Pro”并阅读。 * * * 坊间消息&#xff0c;几个月前高调带资5000万美刀入场、“all in” AI的王…

vx小程序下载使用

首先我们要知道他是干什么用的&#xff0c;首先如果你要学习一个东西就要知道它是干什么的&#xff0c;为什么要学习&#xff0c;自己能收获到什么&#xff01;好久没发帖子了&#xff0c;今天我们来学习一下微信小程序。 这是它的官网&#xff1a;微信开放文档&#xff0c; …

盲盒小程序,微擎小程序通用安装详细教程

盲盒小程序,微擎小程序通用安装详细教程 教程开始&#xff1a; 第一步&#xff1a;我们需要先准备微擎小程序模块应用&#xff0c;这里我们先去下载一下 www.httple.net 第二步&#xff1a;这时候我们需要把后端源码上传到网站目录addons文件然后解压 第三步&#xff1a;进入…