位置: IT常识 - 正文

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

编辑:rootadmin
python实现问卷星自动填写(可以跳过智能验证)

推荐整理分享python实现问卷星自动填写(可以跳过智能验证)(利用python自动填问卷),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:利用python自动填问卷,python生成问卷数据,python做问卷,python问卷调查系统,python做问卷,python刷问卷星调查问卷,python做问卷,python做问卷,内容如对您有帮助,希望把文章链接给更多的朋友!

最近有一个社会实践需要做问卷调查,突发奇想搞一个自动化脚本,省事省米

1 下载依赖selenium

selenium是一款网页爬虫重要的工具。

2  安装chrome驱动

这里需要准备chrome浏览器以及对应的驱动。需要注意的是驱动的版本需要和chrome保持一致。 chrome浏览器版自行查看本机安装版本。

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

chrome驱动下载链接 chrome驱动链接找到对应版本的驱动。 

 

下载后将安装包解压(解压后为.exe文件)在这个文件夹下 

 

  3 导入相关的包from selenium import webdriverimport timeimport randomfrom selenium.webdriver.common.by import Byimport pyautogui防止被识别为脚本option = webdriver.ChromeOptions() option.add_experimental_option('excludeSwitches', ['enable-automation']) option.add_experimental_option('useAutomationExtension', False) browser = webdriver.Chrome(options=option) browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'}) browser.maximize_window() # 窗口最大化 # 这行代码的作用是将webdriver这个属性置为undefined browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})' }) browser.get(url) time.sleep(2)  代码如下# -*- coding: utf-8 -*-# @Time : 2023/1/26 11:34 # @Author : wkk# @File : Python自动化填问卷星.pyfrom selenium import webdriverimport timeimport randomfrom selenium.webdriver.common.by import Byimport pyautoguidef run(num, url): for i in range(num): option = webdriver.ChromeOptions() option.add_experimental_option('excludeSwitches', ['enable-automation']) option.add_experimental_option('useAutomationExtension', False) browser = webdriver.Chrome(options=option) browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'}) browser.maximize_window() # 窗口最大化 # 这行代码的作用是将webdriver这个属性置为undefined browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})' }) browser.get(url) time.sleep(2) num1 = random.randint(1, 2) if browser.find_element(by=By.XPATH, value=f"//div[@for='q1_{num1}']"): browser.find_element(by=By.XPATH, value=f"//div[@for='q1_{num1}']").click() time.sleep(0.5) num2 = random.randint(1, 3) if browser.find_element(by=By.XPATH, value=f"//div[@for='q2_{num2}']"): browser.find_element(by=By.XPATH, value=f"//div[@for='q2_{num2}']").click() time.sleep(0.5) num3 = random.randint(1, 3) if browser.find_element(by=By.XPATH, value=f"//div[@for='q3_{num3}']"): browser.find_element(by=By.XPATH, value=f"//div[@for='q3_{num3}']").click() time.sleep(0.5) num4 = random.randint(1, 3) if browser.find_element(by=By.XPATH, value=f"//div[@for='q4_{num4}']"): browser.find_element(by=By.XPATH, value=f"//div[@for='q4_{num4}']").click() time.sleep(0.5) num5 = random.randint(1, 2) if browser.find_element(by=By.XPATH, value=f"//div[@for='q5_{num5}']"): browser.find_element(by=By.XPATH, value=f"//div[@for='q5_{num5}']").click() time.sleep(0.5) num6 = random.randint(1, 3) if browser.find_element(by=By.XPATH, value=f"//div[@for='q6_{num6}']"): browser.find_element(by=By.XPATH, value=f"//div[@for='q6_{num6}']").click() time.sleep(0.5) num7 = random.randint(1, 4) if browser.find_element(by=By.XPATH, value=f"//div[@for='q7_{num7}']"): browser.find_element(by=By.XPATH, value=f"//div[@for='q7_{num7}']").click() time.sleep(0.5) # num8 = random.randint(1, 3) # if browser.find_element(by=By.XPATH, value=f"//div[@for='q8_{num8}']"): # browser.find_element(by=By.XPATH, value=f"//div[@for='q8_{num8}']").click() # time.sleep(0.5) # 问题5 randomId = random.randint(1, 3) # 随机数选择(选多少个) for i in range(1, randomId + 1): # 循环 实现多选效果 randomId1 = random.randint(1, 3) # 随机选择第1到第6个选项之一 # 两种js实现方式 js = "document.getElementById(\"q8_" + str(randomId1) + "\").checked = true" browser.execute_script(js) # 延时 time.sleep(1) num9 = random.randint(1, 7) if browser.find_element(by=By.XPATH, value=f"//div[@for='q9_{num9}']"): browser.find_element(by=By.XPATH, value=f"//div[@for='q9_{num9}']").click() time.sleep(0.5) num10 = random.randint(1, 3) if browser.find_element(by=By.XPATH, value=f"//div[@for='q10_{num10}']"): browser.find_element(by=By.XPATH, value=f"//div[@for='q10_{num10}']").click() time.sleep(0.5) if browser.find_element(by=By.XPATH, value="//div[@class='submitbtn mainBgColor']"): browser.find_element(by=By.XPATH, value="//div[@class='submitbtn mainBgColor']").click() time.sleep(1) try: element = browser.find_element(By.CSS_SELECTOR, "#alert_box > div:nth-child(2) > div:nth-child(2) > button") element.click() time.sleep(1) yanz = browser.find_element(By.ID, "rectMask") yanz.click() time.sleep(4) except: pass # 先点确认 try: browser.find_element(By.XPATH, '//*[@id="layui-layer1"]/div[3]/a[1]').click() time.sleep(1) except: pass # 再点智能验证提示框,进行智能验证 try: browser.find_element(By.XPATH, '//*[@id="SM_BTN_WRAPPER_1"]').click() time.sleep(3) except: pass # 滑块验证 pyautogui.moveTo(789, 805, duration=1) # 传入屏幕的位置 time.sleep(0.5) pyautogui.dragRel(370, 0, duration=0.8) # 拖动 # pyautogui.moveTo(789, 805, duration=1) # 回到原处 # pyautogui.moveRel(370, 0, duration=1) # pyautogui.dragRel(256, 0, duration=0.8) # pyautogui.moveTo(789, 805) # time.sleep(0.5) # pyautogui.dragRel(370, 0, duration=0.8) time.sleep(5) browser.close() print(f"第{i + 1}份已经完成")if __name__ == '__main__': num = 10 # 填的份数 url = 'https://www.wjx.cn/vm/tXQkrbD.aspx' # 链接 run(num, url)

以上代码是我根据我自己的问卷形式来的,具体参数还得跟着问卷走,代码亲测有效,当短时间内刷的问卷数过多时,可能会出现第二重智能验证,这就要手动验证了哦,所以为了防止出现二重智能验证,在每提交完一份问卷后,要用time.sleep函数用于延时 , 避免提交过快。

本文仅为技术交流,最好不要用来恶意填写别人的问卷,以造成问卷质量低下的情况,请大家还是根据自己的实际情况填写问卷哦。 

本文链接地址:https://www.jiuchutong.com/zhishi/292936.html 转载请保留说明!

上一篇:冰岛羊 (© John Porter LRPS/Alamy)

下一篇:iframe简单使用 、获取iframe 、获取iframe 元素值 、iframe获取父页面的信息(iframe写法)

  • 红米k40有没有小爱同学语音助手吗(红米k40有没有小爱)

    红米k40有没有小爱同学语音助手吗(红米k40有没有小爱)

  • 抖音如何给别人发红包(抖音如何给别人的点赞送花)

    抖音如何给别人发红包(抖音如何给别人的点赞送花)

  • potato一直连接什么情况(potato为什么一直在连接中)

    potato一直连接什么情况(potato为什么一直在连接中)

  • 为什么打别人电话总是在通话中(为什么打别人电话是空号)

    为什么打别人电话总是在通话中(为什么打别人电话是空号)

  • 华为可以插内存卡吗(华为可以插内存卡的平板)

    华为可以插内存卡吗(华为可以插内存卡的平板)

  • ipad pro什么时候上市的(iPad pro什么时候更新)

    ipad pro什么时候上市的(iPad pro什么时候更新)

  • 苹果7home键排线断了(苹果7home键排线断了怎么修理)

    苹果7home键排线断了(苹果7home键排线断了怎么修理)

  • wifi盒子叫什么(wifi盒子叫啥)

    wifi盒子叫什么(wifi盒子叫啥)

  • 金山快盘还能找回吗(金山快盘之前的文件在哪里)

    金山快盘还能找回吗(金山快盘之前的文件在哪里)

  • 浏览器怎么限制网站(浏览器怎么限制使用时间)

    浏览器怎么限制网站(浏览器怎么限制使用时间)

  • 如何查看手机已使用时间(如何查看手机已删除的软件)

    如何查看手机已使用时间(如何查看手机已删除的软件)

  • vue怎么设置字幕时间(vue 设置字体)

    vue怎么设置字幕时间(vue 设置字体)

  • word为什么是兼容模式(word为什么是兼容性模式)

    word为什么是兼容模式(word为什么是兼容性模式)

  • 小米8电池耐用吗(小米电池耐用还是华为电池耐用)

    小米8电池耐用吗(小米电池耐用还是华为电池耐用)

  • oppo微信照片存储位置(oppo微信保存图片不在相册怎么办)

    oppo微信照片存储位置(oppo微信保存图片不在相册怎么办)

  • vivoz3支持红外嘛(vivoz3支持红外遥控吗)

    vivoz3支持红外嘛(vivoz3支持红外遥控吗)

  • 段落之间的距离怎么调(怎样缩短段落之间的距离)

    段落之间的距离怎么调(怎样缩短段落之间的距离)

  • 怎么拦截国外电话号码(怎么拦截国外电话号码联通卡)

    怎么拦截国外电话号码(怎么拦截国外电话号码联通卡)

  • 应用数据库的主要目的(231应用数据库的主要目的是为)

    应用数据库的主要目的(231应用数据库的主要目的是为)

  • 智能充电站(智能充电站校验码)

    智能充电站(智能充电站校验码)

  • 导航地图app开发有啥功能(自己开发地图导航)

    导航地图app开发有啥功能(自己开发地图导航)

  • 【图文教程】怎么在Mac OS X 10.10与 iOS8 之间使用Handoff?(教程图怎么做)

    【图文教程】怎么在Mac OS X 10.10与 iOS8 之间使用Handoff?(教程图怎么做)

  • linux中网络接口名称限制讲解(linux网络接口状态命令)

    linux中网络接口名称限制讲解(linux网络接口状态命令)

  • 最全ROS 入门(ros入门21讲)

    最全ROS 入门(ros入门21讲)

  • Typescript 全栈最值得学习的技术栈 TRPC(typescript完全解读)

    Typescript 全栈最值得学习的技术栈 TRPC(typescript完全解读)

  • 中国注册税务师考试时间
  • 计提业务提成怎么做账
  • 异地分公司需要什么手续
  • 一般纳税人增值税申报操作流程
  • 小规模纳税人销售收入会计分录
  • 购买自用应税车辆的应自购买之日起
  • 应预缴的增值税
  • 社保扣款不成功会短信提醒吗
  • 用银行存款上交各种税费
  • 注销公司方便吗
  • 进口增值税关税怎么付
  • 开了增值税专用发票对方不付款可以申请冻结对方公帐嘛
  • 收到保险公司财产理赔款怎么做账
  • 学校管理费是什么意思
  • 代扣代缴税种有几个
  • 财务软件服务费属于什么费用
  • 环保税征收意义
  • 城市生活垃圾处理与资源化利用工艺设计
  • 货代企业所得税优惠政策
  • 买保险公司的年金险划算吗
  • 固定资产维修费率
  • 法院执行款可以开发票吗
  • macbookpro安装mysql
  • 非限定性净资产年末怎么处理
  • 车间闲置固定资产怎么算
  • 劳动法律法规包含哪些
  • 职工教育经费超过扣除限额的时候调增还是调减
  • 长期借款科目的期末余额反映尚未偿还的借款本金
  • 带息应收票据会计处理,到期
  • 补缴上年度未开票收入增值税,怎么做账
  • kk协议
  • 借入资金会计科目
  • 公司员工抽奖活动
  • 红字写信是什么意思
  • 购进商品发生溢余的核算
  • ps调色的作用
  • 网络编程知识
  • dedecms v6
  • 公司报销招待费需要发票还需要菜单明细吗
  • 什么是外勤会计制度
  • 生产成本明细账t型账
  • 企业应交税金科目编码
  • 福利费用属于哪个部门
  • 提供加工修理修配劳务包含哪些
  • 普通费用发票不入账会有什么后果吗
  • 期末留抵税额和账上哪一个数对应
  • 一般纳税人商贸公司增值税税负率
  • 坏账损失的会计核算方法
  • 承包经营所得个人所得税计算举例
  • 固定资产净残值率
  • 增值税发票开负数怎么做账?
  • 开发成本计入现金流量表
  • 企业购买新能源车免购置税吗
  • 土地增值税怎么预交税款
  • 财务费用中的利息费用指什么
  • 电脑算固定资产哪一类
  • 总账建账要建全部科目吗
  • mysql5.7.32免安装教程
  • 注册表 启动
  • 如何在windows里保存画过的画
  • 电脑周边是什么
  • macbookair如何删除
  • 开启linux系统路由转发功能的语句
  • pull current
  • win8怎么彻底删除软件
  • java.exe是指
  • linux和windows的区别?
  • ExtJS 4.2 Grid组件单元格合并的方法
  • [置顶] 关于在vs2013中配置opengl红宝书第八版环境
  • js存储
  • android常用命令
  • vue做移动端
  • nodejs怎么使用
  • javascript面向对象编程
  • 用if函数计算个人应交所得税
  • 公司代扣税怎么办理
  • 天津生育津贴如何查询申请进度
  • 注册地址和税务登记可以不一致吗
  • 电子税务局怎么找回用户名
  • 代理记账公司前期准备流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设