selenium学习——问卷星(可控比例)
问卷星调查达不到想要的要求?这里满足你
文章目录
目录
文章目录
前言
一、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学习——问卷星(可控比例)相关推荐
- python+selenium 实现 问卷星自动抢讲座
python + selenium 实现 问卷星自动抢讲座 文章目录 python + selenium 实现 问卷星自动抢讲座 一.代码 二.解析 1.安装selenium库 1)PyCharm 编 ...
- python + selenium 实现 问卷星自动抢讲座
python + selenium 实现 问卷星自动抢讲座,抢不到讲座的同学可以借鉴一下 这是我写的代码 from selenium import webdriver from selenium.we ...
- Python~selenium填写问卷星
在学习Python 的过程中学习到selenium这个模块. Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样. Selenium ...
- JAVA、Python、selenium、问卷星自动脚本
项目地址 https://gitee.com/Hardy1/questionnaire-star-script 前期准备 配置jdk 安装python 下载安装mitmproxy 代码实现 项目中se ...
- Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法)
- Selenium自动填写问卷星
Selenium自动填写问卷星 代码 注意 代码 from selenium import webdriver import random import time import numpy as np ...
- 学习python实现问卷星自动填写问卷
学习python实现问卷星自动填写问卷 文章目录 学习python实现问卷星自动填写问卷 任务一:找帖子 思路一: 配置环境: 利用CSS选择器对页面进行解析 我们发现,我们所有的题目的回答的选项的标 ...
- element ui select 自动向上向下弹出_[selenium]用Selenium自动填问卷星的问卷
不知道你家单位是怎么让各位职工上报自己体温的,总之我现在好像一天要报3次这样的感觉,比如这个东西,一天要填1次.每次填报的内容都是一样样的(除了体温以外),但是不能不填,填错了还不好办,怎么办呢?能不 ...
- python爬取问卷星内容_Python Selenium 问卷星自动填写
从问卷星网站找的一个模板 编写思路大致是这样xpath定位网页元素 driver.find_element_by_xpath 对元素进行操作,有点击click和填入send_keys 最后点击提交问卷 ...
最新文章
- linux arm中断跑马灯,S3C2410 MDK实验---ARM汇编语言实现跑马灯
- python数据分析平均时间间隔_python 数据分析中常用的时间--datetime操作
- Oracle Linux Server release 6.3 下安装JDK
- 上海中考-哪些区是“地狱模式”?——2019上海中考数据观
- .NET Core 中的路径问题
- C++ 备忘录 ( 持续更新中... )
- java布局管理怎么有图片_java-用于背景图像和文本的布局管理器
- Google 拼音会导致卡 Ctrl 键?
- SQLI DUMB SERIES-16
- iphone4 base64 mp3 无法解析 html5,javascript - 如何使用HTML5在firefox上播放base64音频数据? - 堆栈内存溢出...
- C# 课堂总结2-数据类型及转换方式
- 计算机网络学习笔记(六)——网络层、虚电路和数据报交换、路由(距离矢量、链路状态算法)、IP编址、网络拥塞控制、网络互联
- shell脚本if和switch语句编写案例
- Flink CDC 实时同步mysql
- 在mysql中加载并执行sql文件
- 前端人员必看css命名,前端css命名规范
- 2021-09-24
- 手机ttf楷体文件_楷体繁体ttf 手机楷体字体ttf
- 【视频】0基础趣学SEO,引爆流量,让客户主动找上门的躺赚神技
- azkaban报错Error Chunking during uploading files to db