位置: 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写法)

  • 所得税费用会计分录
  • 个体工商户个税怎么申报
  • 厂房地面硬化
  • 别人公司过账用自己的银行卡会查吗
  • 银行存款出现负数算不算违规
  • 代加工可靠吗
  • 小规模开的专票能抵扣进项税吗
  • 建筑业属于货物行业吗
  • 有形资产负债率和有形净值负债率
  • 零申报失败什么原因
  • 机动车销售统一专票可以抵扣进项税额吗
  • 债券作为交易性金融资产的账务处理
  • 差旅费实际报销金额超出标准报销金额怎么才能体现出来
  • 已认证抵扣的发票如何红字信息表
  • 餐饮业购买餐桌椅会计分录
  • 委托贷款利息收入账务处理
  • 会计账簿的定义及其作用
  • 农村合作社开的鸡蛋免税票可以抵进项税吗?
  • 后续支出均应计入当期损益
  • 房地产的出租行为属于土地增值税征收范围吗
  • 企业销售产品的会计分录
  • 公司转让税费如何计算
  • 房地产开发企业资质证书
  • win11正式版发布
  • 深度科技win10
  • PHP:stream_register_wrapper()的用法_Stream函数
  • 以旧换新的概念
  • php修改sql语句
  • PHP:proc_terminate()的用法_命令行函数
  • 金融业的特殊性指的是
  • 以其他方式取得土地使用权
  • 小程序新版本
  • vue3使用ref获取元素
  • php字符串的三种定义方式
  • html导航栏边框
  • pytorch教程
  • php charat
  • mkdir 命令
  • 破解版微擎框架如何升级
  • 增值税抵扣进项税额什么意思
  • javascript和java有什么区别
  • 非房地产企业转让建筑物,计提土地增值税时应借记
  • 企业转让无形资产的方式有
  • 企业固定资产账户核算的固定资产其所有权均属于本企业
  • sqlserver的replace
  • 会计报表编制基本要求
  • 简易计税指的是增值税吗
  • 即征即退的收入是不征税收入
  • 模具成本核算汇总表
  • 公司注销固定资产必须清理吗
  • 机票退票手续费太贵怎么办
  • 企业外币折算的方法包括
  • 发票作废了还能恢复吗?
  • 小型企业介绍怎么写
  • mysql查看查询耗时
  • win8pe无法识别硬盘
  • 如何删除多余的空白表格
  • 电脑鼠标滑动时没法动,怎么办?
  • os x yosemite dp5下载地址 os x 10.10 dp5更新内容
  • linuxsu命令作用
  • 电脑出现windows怎么办
  • 重装win7系统后桌面没东西
  • speedupmypc.exe - speedupmypc是什么进程
  • win8系统打不开exe
  • win 8系统怎么样
  • win8电脑管理员权限在哪里设置
  • win7能用多屏协同吗
  • vsftp命令
  • win8无法安装net4.7
  • 怎么查看opengl版本
  • javaScript事件机制兼容【详细整理】
  • android基础教程
  • python用matplot画图
  • Android之SQLite
  • python dict.get()和dict['key']的区别详解
  • 浙里办怎么给小孩子缴医保费
  • 国税网上办税大厅在哪
  • 信用评级机构有几家
  • 每月个人所得税扣除标准
  • 南京税务事务所排行
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设