使用python实现问卷星自动答题功能 |
您所在的位置:网站首页 › 答题神器小程序怎么用 › 使用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:
想看效果的童鞋,可以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('没有') continue lsans=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’) 然后这里我们处理另外一个问题,填空题的问题,我们首先打开填空题的标签
附:这个地方,我们下面也是寻找,我们寻找一个id叫submit_button的id(这个id就是提交按钮的id,如下图所示)。寻找到之后,我们点击它,也就是am.click(),然后再关闭浏览器driver.quit(),然后上面的循环继续。题主在这里设置的是五次循环,想快速填写的可以设置的多一点。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |