Python问卷星批量填写,支持数据自定义分布
Python问卷星调查问卷批量填写,支持树自定义分布
脚本环境
python3+基本python网络生态库
方法
self.wjxNumber改成填写的数量
self.wjxdata改成自己的数据分布
clone问卷星网页URL即可
如果想提高填写速度可以减少sleep时间,但可能触发反扒机制
import requests
import re
import time
import random
import numpy as npclass WenJuanXing:def __init__(self, url):""":param url:要填写的问卷的url"""self.wj_url = urlself.post_url = Noneself.header = Noneself.cookie = Noneself.data_input()def set_data(self):"""这个函数中生成问卷的结果,:return:"""sumbitdata = ""for index in range(23):if self.wjdata[index][0] == 0:for i, num in enumerate(self.wjdata[index]):if i != 0:if num > 0:self.wjdata[index][i] -= 1sumbitdata += '{}${}}}'.format(index+1,i)breakelse:multiChoice = []for i, num in enumerate(self.wjdata[index]):if i != 0:if num > 0:self.wjdata[index][i] -= 1multiChoice.append(i)s =np.array(self.wjdata[index]).sum()offset = (np.array(self.wjdata[index]).sum() - 1) - self.wjNumberif offset < 0:self.wjdata[index][np.argmax(self.wjdata[index])] -= offsetself.wjdata[index][0] = 0sumbitdata += '{}$'.format(index+1)for choice in multiChoice:sumbitdata += '{}|'.format(choice)sumbitdata = sumbitdata[:-1]sumbitdata += '}'sumbitdata = sumbitdata[:-1]self.wjNumber -= 1data={'submitdata': sumbitdata}return datadef data_input(self):"""这个函数用于录入自定义数据分布rowIndex =0 上的0、1分别代表单选和多选:return:"""self.wjdata = np.array([[0,164,136],[0,40,100,60,53,27,20],[0,37,200,63],[0,47,153,100],[0,278,22],[0,189,111],[0,11,136,150,3],[0,118,122,38,22],[1,48,72,212,42,11,83,15],[1,109,47,218,103,11],[0,234,46,20],[1,199,145,136,88,107,212,74,16],[0,49,121,130],[1,75,183,225,184,103,22],[0,74,186,37,3],[0,72,96,118,14],[0,31,243,26],[1,223,257,123,215,268],[0,11,101,124,64],[0,250,9,41],[0,193,23,81,3],[0,164,136],[0,227,45,1,27]])self.wjNumber = 300def set_header(self):"""随机生成ip,设置X-Forwarded-Forip需要控制ip段,不然生成的大部分是国外的:return:"""ip = '{}.{}.{}.{}'.format(112, random.randint(64, 68), random.randint(0, 255), random.randint(0, 255))self.header = {'X-Forwarded-For': ip,'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko\) Chrome/71.0.3578.98 Safari/537.36',}def get_ktimes(self):"""随机生成一个ktimes,ktimes是构造post_url需要的参数,为一个整数:return:"""return random.randint(15, 50)def get_response(self):"""访问问卷网页,获取网页代码:return: get请求返回的response"""response = requests.get(url=self.wj_url, headers=self.header)self.cookie = response.cookiesreturn responsedef get_jqnonce(self, response):"""通过正则表达式找出jqnonce,jqnonce是构造post_url需要的参数:param response: 访问问卷网页,返回的reaponse:return: 找到的jqnonce"""jqnonce = re.search(r'.{8}-.{4}-.{4}-.{4}-.{12}', response.text)return jqnonce.group()def get_rn(self, response):"""通过正则表达式找出rn,rn是构造post_url需要的参数:param response: 访问问卷网页,返回的reaponse:return: 找到的rn"""rn = re.search(r'\d{9,10}\.\d{8}', response.text)return rn.group()def get_id(self, response):"""通过正则表达式找出问卷id,问卷是构造post_url需要的参数:param response: 访问问卷网页,返回的reaponse:return: 找到的问卷id"""id = re.search(r'\d{8}', response.text)return id.group()def get_jqsign(self, ktimes, jqnonce):"""通过ktimes和jqnonce计算jqsign,jqsign是构造post_url需要的参数:param ktimes: ktimes:param jqnonce: jqnonce:return: 生成的jqsign"""result = []b = ktimes % 10if b == 0:b = 1for char in list(jqnonce):f = ord(char) ^ bresult.append(chr(f))return ''.join(result)def get_start_time(self, response):"""通过正则表达式找出问卷starttime,问卷是构造post_url需要的参数:param response: 访问问卷网页,返回的reaponse:return: 找到的starttime"""start_time = re.search(r'\d+?/\d+?/\d+?\s\d+?:\d{2}', response.text)return start_time.group()def set_post_url(self):"""生成post_url:return:"""self.set_header() # 设置请求头,更换ipresponse = self.get_response() # 访问问卷网页,获取responsektimes = self.get_ktimes() # 获取ktimesjqnonce = self.get_jqnonce(response) # 获取jqnoncern = self.get_rn(response) # 获取rnid = self.get_id(response) # 获取问卷idjqsign = self.get_jqsign(ktimes, jqnonce) # 生成jqsignstart_time = self.get_start_time(response) # 获取starttimetime_stamp = '{}{}'.format(int(time.time()), random.randint(100, 200)) # 生成一个时间戳,最后三位为随机数url = 'https://www.wjx.cn/joinnew/processjq.ashx?submittype=1&curID={}&t={}&starttim' \'e={}&ktimes={}&rn={}&jqnonce={}&jqsign={}'.format(id, time_stamp, start_time, ktimes, rn, jqnonce, jqsign)self.post_url = url # 设置urlprint(self.post_url)def post_data(self):"""发送数据给服务器:return: 服务器返回的结果"""response = requests.post(url=self.post_url, data=self.set_data(), headers=self.header, cookies=self.cookie)return responsedef run(self):"""填写一次问卷:return:"""self.set_post_url()result = self.post_data()print(result.content.decode())def mul_run(self, n):"""填写多次问卷:return:"""for i in range(n):time.sleep(random.randint(3,12))self.run()print("已提交总数"+str(i)+"\n")if __name__ == '__main__':w = WenJuanXing('问卷星URL')w.mul_run(300) #实验次数
Python问卷星批量填写,支持数据自定义分布相关推荐
- python问卷星自动填写
疫情期间闲着无聊,每天都要填写问卷星来报告健康情况,于是就拿python爬虫写了一个问卷星自动填写系统,一起来看看吧_ import requests import re import time im ...
- python爬取问卷星内容,Python 问卷星自动填写 爬虫
Python帮你填问卷星 ps:网上看到的代码,虽然技术不深,但我觉得挺有用的,所以在此分享给大家 在某段时间朋友圈是否一直充斥着各种问卷调查,为了达成某种要求我们不断向好友求助填写问卷,今天,我就把 ...
- 问卷星自动填写python selenium脚本(2021vim版,亲测有效,看这一篇就够了)
目录 前言 一.前期准备 二.具体步骤 1.导入库与预定义变量 2.打开浏览器,防止识别为脚本 3浏览问题,选择问题 4提交按钮,验证 全部代码 前言 问卷星已经成为收集问卷的一个很重要的工具,有时可 ...
- 用Python实现问卷星自动填写(超详细!!!)
用Python实现问卷星自动填写(超详细!!!) 前言 一.配置环境 1.1安装依赖 1.2安装驱动 二.实战处理 2.1.引入库函数 2.2.程序所需函数详解 (1)自定义单选函数 (2)自定义多选 ...
- python 实现问卷星自动填写多份
问卷星的问卷填写 工具:burpsuit,python 问卷星亲测,可以用python的requests库对问卷访问填写.首先对访问的页面进行抓包,得到的header部分照抄到requests的hea ...
- 学习python实现问卷星自动填写问卷
学习python实现问卷星自动填写问卷 文章目录 学习python实现问卷星自动填写问卷 任务一:找帖子 思路一: 配置环境: 利用CSS选择器对页面进行解析 我们发现,我们所有的题目的回答的选项的标 ...
- Python实现问卷星自动填写和选择
Python实现问卷星自动填写和选择 啊哈哈哈,我朋友叫我帮他填写问卷星,,我就直接写了个python脚本帮他一次性解决 全随机,全自动,一开始我用的是BP直接抓包发送,不过发送频率过快会让你验证,, ...
- JavaScript——问卷星自动填写
一.前言: 我们学校要刷学术章,有些学术章又是指定在某个时间点填写问卷星的问卷报名的.但是由于我手速慢,导致总会有些时候报不上名,于是想着搞个代码实现自动填写问卷星的报名表.一顿操作后,在github ...
- python填写问卷星_Python填写问卷星
主要使用python实现问卷星的自动填写和提交. 主要使用了https://www.jianshu.com/p/34961ceedcb4的代码,使用了X-Forwarded-For自动修改ip,我测试 ...
最新文章
- iview template模式_使用Iview Menu 导航菜单(非 template/render 模式)
- 怎么用cmd关闭系统弹窗_SD卡受损怎么修复?教你一招三步搞定
- UGUIAnimator模块知识点随记
- 分享Silverlight/WPF/Windows Phone一周学习导读(06月13日-06月18日)
- 果粉失望!iPhone 12系列依旧刘海屏,将升级Face ID元件
- 大学生学java要去培训机构吗?
- python函数不包括参数函数_python中实现函数不限制参数的数量
- 十个提升你Emacs生产力的高招
- python open可以打开什么类型文件_Python打开文件open()的注意事项
- 软考-计算机组成原理与结构
- Cadence Allegro PCB如何快速查找元器件
- Google Draco 源码解析
- 用单片机控制单色显示屏
- 网店系统哪个好,免费网店系统,网店系统排行
- 如何快速了解一个新的前端项目?
- 解决程序中出现小方块问题
- CSS如何使用伪元素选择器给所有的div里的文本前面添加小写罗马数字编号
- 如何解决缓存雪崩、击穿、穿透难题?
- UNITY与Mac⭐三、Unity打包苹果应用的教程
- keras中EarlyStopping(早停止)的用法和原理详解
热门文章
- android pad版本 yy,YY直播 在IOS端、Android端以及WEB端区别。
- 《联邦学习实战》杨强 读书笔记十四——构建公平的大数据交易市场
- YesPlayMusic :给你不一样的高颜值网易云音乐
- 《Python程序设计(第3版)》[美] 约翰·策勒(John Zelle) 第 5 章 编程练习答案
- 小信号采集的硬件设计方案注意事项及电源问题汇总
- 关于对pre-trained模型的使用和理解
- Mysql - 带条件计数(count)
- 达人评测 i5 11300h和r7 5800h哪个好r75800h和i511300h功耗
- 理科女生最吃香的十大职业(这十大职业就业率高)
- 通过usb linux 显示器,惠普的新款 4K 显示器都能通过 USB Type-C 驱动