问卷星调查达不到想要的要求?这里满足你

文章目录

目录

文章目录

前言

一、selenium是什么?

二、使用步骤

1.引入库

2.配置Edge

3.设置参数

4.获取网页题目数,选项个数,类型

5.分别写出单选和多选的选择方法

6.整合一起运行

三.完整代码

总结



前言

问卷星在大家生活中使用都是比较多的,但是数据很多都不能得到想要的预期,学习selenium后,对付问卷星也多了一种方法。


一、selenium是什么?

Selenium是一个免费的(开源)自动化测试组件,适用于跨不同浏览器和平台的Web应用程序。Selenium侧重于自动化基于Web的应用程序。可以代替人们完成在浏览器的操作。

二、使用步骤

1.引入库

代码如下:

import random
import time
from selenium import webdriver

2.配置Edge

代码如下:

edge_options = {"browserName": "MicrosoftEdge","version": "","platform": "WINDOWS","ms:edgeOptions": {"extensions": [], "args": ["--disable-blink-features=AutomationControlled"]  # 去除监测}
}
web = webdriver.Edge(executable_path=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver.exe",capabilities=edge_options)  # 使用浏览器驱动

用chrome试过,验证一直没通过(不清楚为什么)

3.设置参数

url = 'https://www.wjx.cn/vm/YJ4DaLn.aspx'
time_delay = 10  # 每次延时单位秒
times = 10  # 次数
"""datas里面为权重"""
datas = [[5, 3, 1, 1],  # 1[5, 3, 1, 1, 1],  # 2[1, 2, 3, 4],  # 3[1, 1, 3, 4, 4],  # 4[1, 1, 3, 4, 4],  # 5[1, 1, 3, 4, 5],  # 6[1, 1, 3, 4, 5],  # 7[1, 2, 3, 2, 1],  # 8[1, 1, 3, 5, 3],  # 9[5, 5, 5, 5, 5, 1],  # 10[5, 2, 5, 1, 2, 1],  # 11[3, 5, 5, 5, 1],  # 12[5, 5, 1, 3, 1],  # 13]

分别是网址,延时为你人工验证,点确认的时。我暂时没时间,同时也有可能没能力写机器验证,如果有朋友看到,也可以改正交流。次数和选项的权重,可以较好的控制想要控制的比例。

4.获取网页题目数,选项个数,类型

def begin():global mn = 1  # n为当前题目序号fat = web.find_elements_by_xpath('/html/body/div[2]/form/div[6]/div[4]/fieldset/*')  # 题目数for i in fat:  # 每个题目数循环一次m = len(web.find_elements_by_xpath('/html/body/div[2]/form/div[6]/div[4]/fieldset/div[' +str(n) + ']/div[2]/*'))  # 获取选项数,赋值给mques_type = i.get_attribute('type')  # 判断题目类型if ques_type == '3':  # 单选dan(n, datas[n - 1])elif ques_type == '4':  # 多选,选3个duo(n, 3, datas[n - 1])else:pass  # 其他的不选n += 1web.find_element_by_xpath('/html/body/div[2]/form/div[6]/div[8]/div[3]/div/div/div').click()
time.sleep(1)web.find_element_by_xpath('/html/body/div[6]/div[2]/div[2]/button').click()time.sleep(1)web.find_element_by_xpath('/html/body/div[2]/form/div[6]/div[8]/div[2]/div/div/div/div[1]/div[2]').click()

5.分别写出单选和多选的选择方法

def dan(n, data):  # n为序号,date为比例"""单选随机选""""""m为选项个数"""global mlists = random.choices(range(1, m + 1), weights=data, k=1)web.find_element_by_xpath('/html/body/div[2]/form/div[6]/div[4]/fieldset/div[' +str(n) + ']/div[2]/div[' + str(lists[0]) + ']').click()def duo(n, num, data):  # n为序号,num为要选项个数,data为比例"""多选随机选""""""m为选项个数"""global mlists = random.choices(range(1, m + 1), weights=data, k=num)for i in range(num):web.find_element_by_xpath('/html/body/div[2]/form/div[6]/div[4]/fieldset/div[' + str(n) + ']/div[2]/div[' +str(lists[i]) + ']').click()

我这里有点问题,就是多选的没有排除已经选好过的,比如就会导致设置多选选3个,只选择了一种的情况。

6.整合一起运行

if __name__ == '__main__':m = 0for i in range(times):web.get(url)begin()time.sleep(time_delay)

循环次数times,每次延时time_delay秒

三.完整代码

import random
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChainsedge_options = {"browserName": "MicrosoftEdge","version": "","platform": "WINDOWS","ms:edgeOptions": {"extensions": [], "args": ["--disable-blink-features=AutomationControlled"]  # 去除监测}
}
web = webdriver.Edge(executable_path=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver.exe",capabilities=edge_options)  # 使用浏览器驱动def dan(n, data):  # n为序号,date为比例"""单选随机选""""""m为选项个数"""global mlists = random.choices(range(1, m + 1), weights=data, k=1)web.find_element_by_xpath('/html/body/div[1]/form/div[6]/div[4]/fieldset/div[' +str(n) + ']/div[2]/div[' + str(lists[0]) + ']').click()def duo(n, num, data):  # n为序号,num为要选项个数,data为比例"""多选随机选""""""m为选项个数"""global mlists = random.choices(range(1, m + 1), weights=data, k=num)for i in range(num):web.find_element_by_xpath('/html/body/div[1]/form/div[6]/div[4]/fieldset/div[' + str(n) + ']/div[2]/div[' +str(lists[i]) + ']').click()def pai(n, data):"""排序题"""ms = web.find_elements_by_xpath('/html/body/div[1]/form/div[6]/div[4]/fieldset/div[19]/ul/*')pai_list = [x for x in range(1, len(ms) + 1)]pai_data = dataprint(pai_data)for i in range(len(ms)):j = random.choices(range(len(pai_list)), weights=pai_data, k=1)web.find_element_by_xpath('/html/body/div[1]/form/div[6]/div[4]/fieldset/div[' + str(n) + ']/ul/li[' +str(pai_list[j[0]]) + ']').click()pai_list.pop(j[0])pai_data.pop(j[0])def begin():global mn = 1  # n为当前题目序号fat = web.find_elements_by_xpath('/html/body/div[1]/form/div[6]/div[4]/fieldset/*')  # 题目数for i in fat:  # 每个题目数循环一次m = len(web.find_elements_by_xpath('/html/body/div[1]/form/div[6]/div[4]/fieldset/div[' +str(n) + ']/div[2]/*'))  # 获取选项数,赋值给mques_type = i.get_attribute('type')  # 判断题目类型if ques_type == '3':  # 单选dan(n, datas[n - 1])elif ques_type == '4':  # 多选,选3个duo(n, 3, datas[n - 1])elif ques_type == '11':  # 排序题pai(n, datas[n - 1])else:pass  # 其他的不选n += 1web.find_element_by_xpath('/html/body/div[1]/form/div[6]/div[8]/div[3]/div/div/div').click()time.sleep(2)try:web.find_element_by_xpath('/html/body/div[5]/div[2]/div[2]/button').click()time.sleep(1)web.find_element_by_xpath('/html/body/div[1]/form/div[6]/div[8]/div[2]/div/div/div/div[1]/div[2]').click()time.sleep(4)button = web.find_element_by_xpath('/html/body/div[1]/form/div[6]/div[8]/div[2]/div/div/div/div[3]/div[1]/div/div[1]/span')ActionChains(web).drag_and_drop_by_offset(button, 300, 0).perform()except:passif __name__ == '__main__':m = 0url = 'https://www.wjx.cn/vm/Q9vKRNT.aspx'time_delay = 5  # 每次延时单位秒times = 27  # 次数"""datas里面为权重"""for i in range(times):datas = [[3, 2],  # 1[2, 2, 3, 1],  # 2[0, 1, 5, 2, 2],  # 3[8, 2, 3, 1],  # 4[5, 5, 3, 1, 2],  # 5[5, 1, 1, 1, 1],  # 6[5, 2, 0, 1],  # 7[0, 1, 5, 4],  # 8[0, 4, 3],  # 9[1, 5, 2, 1],  # 10[3, 3, 1, 1],  # 11[4, 1, 2],  # 12[0, 4, 2, 2],  # 13[1, 2, 4, 1],  # 4[2, 4, 3, 1],  # 5[6, 1, 1],  # 6[2, 4, 4, 3],  # 7[6, 4, 2, 1],  # 8[4, 3, 2, 3],  # 9[2, 4, 3, 2],  # 10[0, 1, 1, 1],  # 11[2, 2, 1, 1, 1],  # 12[0, 1, 4, 3, 4, 3]  # 13]web.get(url)begin()time.sleep(time_delay)

总结

本次在问卷星上需要部分调查数据,但是时间紧迫,没有时间做详细的调查了,只能通过这种方法得到数据

selenium学习——问卷星(可控比例)相关推荐

  1. python+selenium 实现 问卷星自动抢讲座

    python + selenium 实现 问卷星自动抢讲座 文章目录 python + selenium 实现 问卷星自动抢讲座 一.代码 二.解析 1.安装selenium库 1)PyCharm 编 ...

  2. python + selenium 实现 问卷星自动抢讲座

    python + selenium 实现 问卷星自动抢讲座,抢不到讲座的同学可以借鉴一下 这是我写的代码 from selenium import webdriver from selenium.we ...

  3. Python~selenium填写问卷星

    在学习Python 的过程中学习到selenium这个模块. Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样. Selenium ...

  4. JAVA、Python、selenium、问卷星自动脚本

    项目地址 https://gitee.com/Hardy1/questionnaire-star-script 前期准备 配置jdk 安装python 下载安装mitmproxy 代码实现 项目中se ...

  5. Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法)

  6. Selenium自动填写问卷星

    Selenium自动填写问卷星 代码 注意 代码 from selenium import webdriver import random import time import numpy as np ...

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

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

  8. element ui select 自动向上向下弹出_[selenium]用Selenium自动填问卷星的问卷

    不知道你家单位是怎么让各位职工上报自己体温的,总之我现在好像一天要报3次这样的感觉,比如这个东西,一天要填1次.每次填报的内容都是一样样的(除了体温以外),但是不能不填,填错了还不好办,怎么办呢?能不 ...

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

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

最新文章

  1. linux arm中断跑马灯,S3C2410 MDK实验---ARM汇编语言实现跑马灯
  2. python数据分析平均时间间隔_python 数据分析中常用的时间--datetime操作
  3. Oracle Linux Server release 6.3 下安装JDK
  4. 上海中考-哪些区是“地狱模式”?——2019上海中考数据观
  5. .NET Core 中的路径问题
  6. C++ 备忘录 ( 持续更新中... )
  7. java布局管理怎么有图片_java-用于背景图像和文本的布局管理器
  8. Google 拼音会导致卡 Ctrl 键?
  9. SQLI DUMB SERIES-16
  10. iphone4 base64 mp3 无法解析 html5,javascript - 如何使用HTML5在firefox上播放base64音频数据? - 堆栈内存溢出...
  11. C# 课堂总结2-数据类型及转换方式
  12. 计算机网络学习笔记(六)——网络层、虚电路和数据报交换、路由(距离矢量、链路状态算法)、IP编址、网络拥塞控制、网络互联
  13. shell脚本if和switch语句编写案例
  14. Flink CDC 实时同步mysql
  15. 在mysql中加载并执行sql文件
  16. 前端人员必看css命名,前端css命名规范
  17. 2021-09-24
  18. 手机ttf楷体文件_楷体繁体ttf 手机楷体字体ttf
  19. 【视频】0基础趣学SEO,引爆流量,让客户主动找上门的躺赚神技
  20. azkaban报错Error Chunking during uploading files to db

热门文章

  1. 关于风险和收益的想法
  2. 「Hortic Res」CsGPA1调控黄瓜耐寒性的分子机制
  3. pad平板性能测试软件,安兔兔评测iPad版
  4. R语言实现 朴素贝叶斯分类
  5. Univariate Distribution Relationships(单变量分布关系)
  6. 802.11基本概念介绍【802.11 无线网络权威指南学习总结1】
  7. 基于camunda如何实现会签:camunda会签流程配置与原理解析
  8. js实现倒计时,定时器--完成时间倒计时
  9. 添加按钮声音nbsp;nbsp;播放声音
  10. 项目经理年终总结|一个高层项目管理者的年终反思