使用python实现问卷星自动答题功能——基础篇

题主在学习的过程中,老是有人来让填问卷星,就觉得人填的很麻烦,于是就自己动手写了一个python脚本来实现自动填写问卷星

1.首先我们得学会使用python里面的一个库,selenium,这个库是用来专门面对浏览器的一个库,可以在浏览器里面实现很多的操作(有的时候爬虫也是通过它来实现的。)安装的方法很简单,直接使用cmd,pip install selenium 安装即可(这里不再演示,不会pip的小伙伴可以去百度找找哦)

2.首先就是库的导入阶段,在这里面为了保持我们使用函数的时候不会太过的长,比如.xxxx.xxx的出现,所以我们只使用selenium里面的一个小的库就行了,我们这里使用的是webdriver,使用这个就可以完成我们的工作了。

from selenium import webdriver
import random

解析:这里面的第一行是主要的库,使用random这个库主要是为了实现随机选择的问题。因为我们所做的题目里面是有选择题的,我们使用random这个库来实现在多个选项里面选一个的方法。

3.进入代码正题,首先我们的目的就是实现自动填写问卷星,我们先要打开浏览器,并进入到我们想要填题目的界面。

driver = webdriver.Chrome()
driver.get('https://www.wjx.cn/jq/22452252.aspx')  
input()

附:这个地方注意,直接运行的话是会报错的,因为各个浏览器都是需要驱动的,像大家看了代码之后肯定都发现了,题主所使用的是谷歌浏览器,因为调用的是Chrome这个函数,我们就需要一个浏览器工具来帮我们打开浏览器。首先我们先下载一个插件,由于题主使用的是谷歌浏览器,所以下载的是谷歌浏览器的插件。怕小伙伴找不到,所以在这里贴一个链接:
谷歌浏览器工具链接
找到自己的谷歌浏览器版本下载就可以啦。谷歌浏览器的查看方式为:打开浏览器->…->设置->关于Chrome:
在这里插入图片描述
下载对于的工具后,解压,打开放在Python的目录下面,如下图所示:

在这里插入图片描述
把这个exe放在python的目录下面,就可以实现打开浏览器的功能了(上面代码里面的input是没有用的,作用是为了让浏览器不会关闭的太快,可以看到效果)。

4.进行标签的分析,相信大家都已经打开了浏览器,但是也只是进到了界面,但是咱还得运行,所以我们来对标签进行分析

在这里插入图片描述
我们可以看到,我们的每个题目,都位于一个div标签里面,所以我们先定位到每个标签。使用get函数,获得对应的标签。

from selenium import webdriver
import random
driver = webdriver.Chrome()
driver.get('https://www.wjx.cn/jq/22452252.aspx')  
answers = driver.find_elements_by_css_selector('.div_question')

想看效果的童鞋,可以printf一下,就可以看到结果了。

5.进行了标签的划分之后,就到了填题目的时候了,这个时候我们采用一个循环,拿出之前我们所找到的题目,然后并进行作答(使用random来进行随机选取答案),由于避免过程太多,在这里把如何做填空题的方法也写在这里了。

from selenium import webdriver
import random
driver = webdriver.Chrome()
driver.get('https://www.wjx.cn/jq/22452252.aspx')  
answers = driver.find_elements_by_css_selector('.div_question')
for answer in answers:try:####先滑到标签再去点击driver.execute_script("arguments[0].scrollIntoView();",answer)### 找到标签ans=answer.find_elements_by_css_selector('li')if not ans:text=answer.find_element_by_css_selector('textarea')text.send_keys('没有')continuelsans=random.choice(ans)lsans.click()except Exception as e:print(e)

解释:首先我们获得了answer之后,我们得避免一些问题导致我们的代码出现红字,于是我们使用try来避免报错(这个原因是,有些题目我们不能作答,但是使用死的代码会发生卡死的现象。)举个简单的例子,当我们遇到一个分叉的时候,比如有的题目,你选了否就会答第五题,选了是就会答第六题,这样子虽然我们会获取到五和六的题目的div,但是却不能两者都答,如果不使用try的话,会导致代码报错不能运行,我们使用try这样子就可以保持即使这题答不了,也只会把异常抛出,然后我们依然会往后做(这样子就从另一个角度来解决了分叉的问题)。

因为问卷星肯定不是只有几题的,肯定是有很多道题的,所以我们要滑动浏览器(因为我们使用的点击只是模仿人的操作,人肯定是不能到自己看不到的地方答题的)使用driver.execute_script(“arguments[0].scrollIntoView();”,answer)来进行浏览器的滑动
然后我们发现,我们所有的题目的回答的选项的标签都在li标签里面,所以我们找到li标签。ans=answer.find_elements_by_css_selector(‘li’)
然后这里我们处理另外一个问题,填空题的问题,我们首先打开填空题的标签

在这里插入图片描述
发现填空题的标签为textarea,所以我们单独为他补一个if,专门用来对付填空题,if不是li标签,我们就来寻找到textarea,然后填入没有,这里面的text.send_keys(‘没有’)就是起到填空的功能,然后如果不是填空题的话,我们就使用random函数的choice来随机产生一个结果,进行选择,这里的lsans.click()是起到点击选项的作用。

6.到这里其实我们就已经大工完成了,但是我们要想实现快速的填写,我们还得进行浏览器的关闭(因为浏览器开一次只能填一次,所以可以让它自动关闭),然后我们在使用一个循环,进行不断的开关浏览器,即可实现不停的填写问卷。

完整的代码如下:

from selenium import webdriver
import random
driver = webdriver.Chrome()
driver.get('https://www.wjx.cn/jq/22452252.aspx') 
answers = driver.find_elements_by_css_selector('.div_question')
for i in range(5):for answer in answers:try:####先滑到标签再去点击driver.execute_script("arguments[0].scrollIntoView();",answer)### 找到标签ans=answer.find_elements_by_css_selector('li')if not ans:text=answer.find_element_by_css_selector('textarea')text.send_keys('没有')continuelsans=random.choice(ans)lsans.click()except Exception as e:print(e)am=driver.find_element_by_css_selector('#submit_button')am.click()     driver.quit()

附:这个地方,我们下面也是寻找,我们寻找一个id叫submit_button的id(这个id就是提交按钮的id,如下图所示)。寻找到之后,我们点击它,也就是am.click(),然后再关闭浏览器driver.quit(),然后上面的循环继续。题主在这里设置的是五次循环,想快速填写的可以设置的多一点。
在这里插入图片描述

由于运行效果太快了,不好截图,这里就不放运行的截图了,按照操作来的话,应该是可以完成自动填写的功能的。码字不易,走过路过,点个赞再走呗。

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

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

相关文章

用Python实现问卷星自动填写(超详细!!!)

用Python实现问卷星自动填写(超详细!!!) 前言一、配置环境1.1安装依赖1.2安装驱动 二、实战处理2.1、引入库函数2.2、程序所需函数详解(1)自定义单选函数(2)自定义多选函…

自动填写问卷星并提交

自动填写问卷星并提交 鉴于好多小伙伴要做数据分析的时候发放大量的问卷,但收回来的却寥寥无几,还受到其他小伙伴的冷眼,所以在下决定通过代码的方式,来实现问卷星的自动填写并提交。 以谷歌浏览器为例 1.随便到一个页面&#x…

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

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

利用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的王…