目录

  • 前言
  • 一、前期准备
  • 二、具体步骤
    • 1.导入库与预定义变量
    • 2.打开浏览器,防止识别为脚本
    • 3浏览问题,选择问题
    • 4提交按钮,验证
  • 全部代码

前言

问卷星已经成为收集问卷的一个很重要的工具,有时可以用来报名参加活动,有时可以用来收集某些领域相关的情况,为了更快地填写问卷,特别是报名参加一些名额有限的活动的时候,或者批量填写问卷,可以利用python写个问卷星自助填写程序。


提示:以下是本篇文章正文内容,下面案例可供参考,码字不易,觉得有用的可以点赞收藏关注。

一、前期准备

我采用的是python的selenium模块,前期准备工作需要下载chrome驱动,然后要有python ide(如pycharm)
谷歌浏览器驱动链接
找到自己的谷歌浏览器版本下载就可以啦。谷歌浏览器的查看方式为:打开浏览器->…->设置->关于Chrome:
下载后,解压,打开放在Python的目录下面。

二、具体步骤

1.导入库与预定义变量

导入库,没有的就用pip自定义安装,预定义变量可以方便修改

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import random#填写问卷星问卷的地址,2021年都是带vm字符偏多
urlip = "https://www.wjx.top/vm/xxxx.aspx"
#名字
name = "小红"
#性别
sex=2
#手机
phone = '18100000000'
#邮箱
Email = 'xiaohong@foxmail.com'

2.打开浏览器,防止识别为脚本

这里参考的是

https://blog.csdn.net/qq_45717425/article/details/119737648

    # 给出所需的url和option参数url_survey = (urlip)  # 根据需要填写url#防止被浏览器识别为脚本option = webdriver.ChromeOptions()option.add_experimental_option('excludeSwitches', ['enable-automation'])option.add_experimental_option('useAutomationExtension', False)driver = webdriver.Chrome(options=option)driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})driver.get(url_survey)time.sleep(0.2)

3浏览问题,选择问题

1、首先找到每个问题,answers = driver.find_elements(By.CSS_SELECTOR, “.ui-field-contain”)
用answers存储每个问题,然后可以遍历问题,用i存储每个问题的序号

2、如何解析问题呢, 可以用title = answer.find_element(By.CSS_SELECTOR, “.field-label”),
找到问题的标题,然后判断其中的问题是什么?

3、接着就找到选项,进行解析、选择,如果是填空类的,如姓名,可以使用send_keys

if (“姓名” in title.text or “名字” in title.text):
idfind=“q%d”%i
a = driver.find_element_by_id(idfind)
a.send_keys(name)
如果是选项类,如性别,要看按钮是什么类型,可以对每个选项进行解析
例如:
radios = answer.find_elements(By.CSS_SELECTOR, “.ui-radio”)
可以存储每个按钮,然后遍历,找到想要的按钮,然后用click()函数去点击
for radio in radios:
j += 1
if (sex in (radio.text)):
radiofind = “//*[@id=‘div%d’]/div[2]/div[%d]/div” % (i, j)(这里是用xpath格式去找到按钮在哪)
print(radiofind)
driver.find_element_by_xpath(radiofind).click()(这里可以点击按钮)
注意,用css_selector去找对应框时,要用F12开发者选项去看具体的是什么类型,才能确保找对,填空类可能有不同类型,如textarea。

    answers = driver.find_elements(By.CSS_SELECTOR, ".ui-field-contain")i = 0for answer in answers:try:i+=1driver.execute_script("arguments[0].scrollIntoView();", answer)title = answer.find_element(By.CSS_SELECTOR, ".field-label")print(title.text)### 有选项if ("姓名" in title.text or "名字" in title.text):idfind="q%d"%ia = driver.find_element_by_id(idfind)a.send_keys(name)elif ("学号" in title.text ):idfind = "q%d" % idriver.find_element_by_id(idfind).send_keys(cardnumber)elif ("手机" in title.text or "电话" in title.text):idfind = "q%d" % idriver.find_element_by_id(idfind).send_keys(phone)elif ("性别" in title.text):idfind = "//*[@id='div%d']/div[2]/div[1]/div" % iprint(idfind)driver.find_element_by_xpath(idfind).click()radios = answer.find_elements(By.CSS_SELECTOR, ".ui-radio")j = 0for radio in radios:j += 1if (sex in (radio.text)):radiofind = "//*[@id='div%d']/div[2]/div[%d]/div" % (i, j)print(radiofind)driver.find_element_by_xpath(radiofind).click()elif ("邮箱" in title.text or "mail" in title.text):idfind = "q%d" % idriver.find_element_by_id(idfind).send_keys(email)elif ("时间" in title.text ):radios = answer.find_elements(By.CSS_SELECTOR, ".ui-radio")j = 0for radio in radios:print(radio.text)j += 1radiofind = "//*[@id='div%d']/div[2]/div[%d]/div" % (i, j)print(radiofind)driver.find_element_by_xpath(radiofind).click()checks = answer.find_elements(By.CSS_SELECTOR, ".ui-checkbox")j = 0for radio in checks:print(radio.text)j += 1radiofind = "//*[@id='div%d']/div[2]/div[%d]/div" % (i, j)print(radiofind)driver.find_element_by_xpath(radiofind).click()else:ans = answer.find_elements(By.CSS_SELECTOR, ".ui-controlgroup")if ans:print("ans:", ans)lsans = random.choice(ans)lsans.click()continueinputtext = answer.find_element_by_css_selector("textarea")inputtext.send_keys('没有')except Exception as e:print(e)

4提交按钮,验证

找到提交按钮,提交,可能需要验证,最后如果是想出错了自己填写,可以加sleep函数,给自己时间填写,如果是批量填写,想要快速就不用。

    time.sleep(1)am = driver.find_element_by_xpath("//*[@id='ctlNext']")am.click()time.sleep(0.5)# 模拟点击智能验证按钮# 先点确认driver.find_element_by_xpath("//button[text()='确认']").click()# 再点智能验证提示框,进行智能验证driver.find_element_by_xpath("//div[@id='captcha']").click()print("end")time.sleep(100)

全部代码

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import random#填写问卷星问卷的地址
urlip = "https://www.wjx.top/vm/trZjDys.aspx"
#名字
name = "小红"
#学号
cardnumber="202130072021"
#性别
sex="女"
#手机
phone = '18100000000'
#邮箱
email = 'xiaohong@foxmail.com'def auto():print("正在执行操作......")# 给出所需的url和option参数url_survey = (urlip)  # 根据需要填写url#防止被浏览器识别为脚本option = webdriver.ChromeOptions()option.add_experimental_option('excludeSwitches', ['enable-automation'])option.add_experimental_option('useAutomationExtension', False)driver = webdriver.Chrome(options=option)driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})driver.get(url_survey)time.sleep(0.2)answers = driver.find_elements(By.CSS_SELECTOR, ".ui-field-contain")i = 0for answer in answers:try:i+=1driver.execute_script("arguments[0].scrollIntoView();", answer)title = answer.find_element(By.CSS_SELECTOR, ".field-label")print(title.text)### 有选项if ("姓名" in title.text or "名字" in title.text):idfind="q%d"%ia = driver.find_element_by_id(idfind)a.send_keys(name)elif ("学号" in title.text ):idfind = "q%d" % idriver.find_element_by_id(idfind).send_keys(cardnumber)elif ("手机" in title.text or "电话" in title.text):idfind = "q%d" % idriver.find_element_by_id(idfind).send_keys(phone)elif ("性别" in title.text):idfind = "//*[@id='div%d']/div[2]/div[1]/div" % iprint(idfind)driver.find_element_by_xpath(idfind).click()radios = answer.find_elements(By.CSS_SELECTOR, ".ui-radio")j = 0for radio in radios:j += 1if (sex in (radio.text)):radiofind = "//*[@id='div%d']/div[2]/div[%d]/div" % (i, j)print(radiofind)driver.find_element_by_xpath(radiofind).click()elif ("邮箱" in title.text or "mail" in title.text):idfind = "q%d" % idriver.find_element_by_id(idfind).send_keys(email)elif ("时间" in title.text ):radios = answer.find_elements(By.CSS_SELECTOR, ".ui-radio")j = 0for radio in radios:print(radio.text)j += 1radiofind = "//*[@id='div%d']/div[2]/div[%d]/div" % (i, j)print(radiofind)driver.find_element_by_xpath(radiofind).click()checks = answer.find_elements(By.CSS_SELECTOR, ".ui-checkbox")j = 0for radio in checks:print(radio.text)j += 1radiofind = "//*[@id='div%d']/div[2]/div[%d]/div" % (i, j)print(radiofind)driver.find_element_by_xpath(radiofind).click()else:ans = answer.find_elements(By.CSS_SELECTOR, ".ui-controlgroup")if ans:print("ans:", ans)lsans = random.choice(ans)lsans.click()continueinputtext = answer.find_element_by_css_selector("textarea")inputtext.send_keys('没有')except Exception as e:print(e)time.sleep(1)am = driver.find_element_by_xpath("//*[@id='ctlNext']")am.click()time.sleep(0.5)# 模拟点击智能验证按钮# 先点确认driver.find_element_by_xpath("//button[text()='确认']").click()# 再点智能验证提示框,进行智能验证driver.find_element_by_xpath("//div[@id='captcha']").click()print("end")time.sleep(100)if __name__ == '__main__':auto()

感谢阅读,如果对您有帮助,欢迎点赞,关注,收藏

问卷星自动填写python selenium脚本(2021vim版,亲测有效,看这一篇就够了)相关推荐

  1. Python实现问卷星自动填写和选择

    Python实现问卷星自动填写和选择 啊哈哈哈,我朋友叫我帮他填写问卷星,,我就直接写了个python脚本帮他一次性解决 全随机,全自动,一开始我用的是BP直接抓包发送,不过发送频率过快会让你验证,, ...

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

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

  3. 学习python实现问卷星自动填写问卷

    学习python实现问卷星自动填写问卷 文章目录 学习python实现问卷星自动填写问卷 任务一:找帖子 思路一: 配置环境: 利用CSS选择器对页面进行解析 我们发现,我们所有的题目的回答的选项的标 ...

  4. python问卷星自动填写

    疫情期间闲着无聊,每天都要填写问卷星来报告健康情况,于是就拿python爬虫写了一个问卷星自动填写系统,一起来看看吧_ import requests import re import time im ...

  5. JavaScript——问卷星自动填写

    一.前言: 我们学校要刷学术章,有些学术章又是指定在某个时间点填写问卷星的问卷报名的.但是由于我手速慢,导致总会有些时候报不上名,于是想着搞个代码实现自动填写问卷星的报名表.一顿操作后,在github ...

  6. 问卷星自动填写JavaScrip脚本使用教程

    本文所用到的案例: https://blog.csdn.net/weixin_44343074/article/details/106133929?ops_request_misc=%257B%252 ...

  7. python爬取问卷星内容_Python Selenium 问卷星自动填写

    从问卷星网站找的一个模板 编写思路大致是这样xpath定位网页元素 driver.find_element_by_xpath 对元素进行操作,有点击click和填入send_keys 最后点击提交问卷 ...

  8. python实现问卷星自动填写(可以跳过智能验证)

    最近有一个社会实践需要做问卷调查,突发奇想搞一个自动化脚本,省事省米 1 下载依赖selenium selenium是一款网页爬虫重要的工具. 2  安装chrome驱动 这里需要准备chrome浏览 ...

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

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

最新文章

  1. ATEN—第十章OSPF的高级配置(4)
  2. 大学计算机课程操作文档,计算机操作系统大学课程.pptx
  3. axios 同步_githubactions进行github仓库和gitee仓库同步
  4. PHP中的加强型接口Traits
  5. c++ 航空管理系统_浅谈航站楼能源管理系统的设计与应用
  6. python运行怎么下一步_简明Python3教程 18.下一步是什么
  7. stc15w4k32s4管脚图_STC15W4K32S4系列
  8. SuperSocket架构设计示意图【转】
  9. 【POJ 2456】【二分答案】Aggressive cows(暑假 No.1)
  10. Linux 查看网卡配置速率
  11. 【Python密度泛函理论】
  12. 软件开发生命周期的五个阶段
  13. 自相关性,偏自相关性分析,时间序列相关性分析(spearman相关性,pearson相关性)
  14. antv | G2Plot 数据可视化图表库-案例
  15. SpringBoot文件上传文件大小限制The field file exceeds its maximum permitted size of 1048576 bytes.
  16. pagehelper返回的total总是等于pagesize问题解决
  17. Linux系统中目录或文件颜色代表的含义以及输出内容的颜色显示功能
  18. matlab仿真放入直流电源,用Matlab/Simulink软件包建模电容滤波直流电源
  19. java开发基础知识学习总结
  20. 备忘录模式(设计模式_20)

热门文章

  1. 微信小程序 | 吐血整理的日历及日程时间管理
  2. tpx色卡电子版_潘通色卡电子版
  3. win10蓝牙已配对连接不上_图文解读win10系统显示蓝牙已配对但未连接的解决教程...
  4. 机器学习--身份证号识别
  5. 30天web实践2-timelinejs
  6. java 去掉分隔符_Java字符串拼接去掉首尾中间用分隔符分割
  7. 微点注册web服务器没反应,微点主动防御网络版客户端Web设置教程.doc
  8. 这3种扣工资行为,是违法的
  9. 瑞星发布路由器安全报告 无线路由器安全成高危区
  10. 数学分析第一课(数学分析和微积分的桥梁)