python填写问卷星,疫情上报
#!!!注意:修改main里的url为真实的url,按需修改 50行 set_data中的submitdata
# 61行 ip 修改为 真ip
# submittype可能有错误,在151行
# 提交可能出错 import requests
import re
import time
import random
import datetime class WenJuanXing:
def __init__(self, url):
"""
:param url:要填写的问卷的url
"""
self.wj_url = url
self.post_url = None
self.header = None
self.cookie = None
self.data = None def set_data(self):
"""
这个函数中生成问卷的结果,可根据问卷结果,随机生成答案
:return:
"""
now=str(datetime.date.today()) def temperature():
'''
生成体温
:return:
'''
high=round(random.uniform(36.5,37.0),1)
low=round(high-round(random.uniform(0.3,0.5),1),1)
high=str(high)
low=str(low)
return high,low temperature_self_high,temperature_self_low=temperature()
temperature_m_high,temperature_m_low=temperature()
temperature_f_high,temperature_f_low=temperature()
temperature_s_high,temperature_s_low=temperature()
#temperature_g_high,temperature_g_low=temperature() #submitdata也可以从post里复制
submitdata='1$'+now+'}2$班级}3$姓名}4$学号}5$1}6$无}7$'+temperature_self_high+'}8$'+temperature_self_low+'}9$地址[xxx.xxxxxx,xx.xxxxxx]}10$1|2}11$父亲姓名}12$'+temperature_f_high+'}13$'+temperature_f_low+'}14$母亲姓名}15$'+temperature_m_high+'}16$'+temperature_m_low+'}17$数量}18$关系姓名,'+temperature_s_high+'/'+temperature_s_low
#如果要更多的其他同住人,追加以下内容
# +',关系姓名,'+temperature_g_high+'/'+temperature_g_low
self.data = {'submitdata':submitdata} def set_header(self):
"""
随机生成ip,设置X-Forwarded-For
ip需要控制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; rv:74.0) Gecko/20100101 Firefox/74.0',
} 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.cookies
return response def 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 % 10
if b == 0:
b = 1
for char in list(jqnonce):
f = ord(char) ^ b
result.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() # 设置请求头,更换ip
response = self.get_response() # 访问问卷网页,获取response
ktimes = self.get_ktimes() # 获取ktimes
jqnonce = self.get_jqnonce(response) # 获取jqnonce
rn = self.get_rn(response) # 获取rn
id = self.get_id(response) # 获取问卷id
jqsign = self.get_jqsign(ktimes, jqnonce) # 生成jqsign
start_time = self.get_start_time(response) # 获取starttime
time_stamp = '{}{}'.format(int(time.time()), random.randint(100, 200)) # 生成一个时间戳,最后三位为随机数 url = 'https://www.wjx.cn/joinnew/processjq.ashx??submittype=5&curID={}&t={}&starttim' \
'e={}&ktimes={}&rn={}&jqnonce={}&jqsign={}'.format(id, time_stamp, start_time, ktimes, rn, jqnonce, jqsign)
self.post_url = url # 设置url
print(self.post_url) def post_data(self):
"""
发送数据给服务器
:return: 服务器返回的结果
"""
self.set_data()
response = requests.post(url=self.post_url, data=self.data, headers=self.header, cookies=self.cookie)
return response def run(self):
"""
填写一次问卷
:return:
"""
self.set_post_url()
result = self.post_data()
print(result.content.decode()) if __name__ == '__main__':
w = WenJuanXing('url')
w.run()
参考:
https://www.jianshu.com/p/34961ceedcb4
python填写问卷星,疫情上报的更多相关文章
- 使用Python自动填写问卷星(pyppeteer反爬虫版)
写此文的目的是为了方便寒假自己忘记填问卷星 一开始的想法和去年一样,去年就写过一版,想着今年不过就是改改数据,换换id而已,另外没想到的事情发生了... 满怀信心的写完代码 from selenium ...
- JavaScript——问卷星自动填写
一.前言: 我们学校要刷学术章,有些学术章又是指定在某个时间点填写问卷星的问卷报名的.但是由于我手速慢,导致总会有些时候报不上名,于是想着搞个代码实现自动填写问卷星的报名表.一顿操作后,在github ...
- selenium+python+eclipse 实现 “问卷星”网站,登录与检查登录示例!
1.使用selenium+python+eclipse实现的登录"问卷星",问卷星访问地址:https://www.sojump.com/ 2.实现步骤:1)进入链接---首页-- ...
- UI自动化填写问卷(selenium)+定时任务(懒人必备)
1.自动填报 UI自动化 selenium 开发程序动机:天天有人催着填写问卷,弄的头大.主要还是懒的每天一个个去填写内容. 开发总时长:2个小时:学习+开发+修改 遇到的小问题: 在自动化填写地图的 ...
- 问卷星导入数据到SPSS,数据变成-3是什么原因?
问卷星将数字“-3”表示为筛选或者跳转题:如果问卷中有设计筛选或者跳转,此时则会出现“-3”这个数字. 解决办法1 分析时首先进行筛选,然后再分析,便不会出现“-3”,而且一定需要这样进行.“筛选样本 ...
- 【HTML基础习题】HTML5+CSS3做问卷星登录页面
源代码下载地址:https://download.csdn.net/download/weixin_44893902/12839539 码云仓库地址: https://gitee.com/ynavc/ ...
- 带大家用40行python代码实现一个疫情地图
最近两个月,因为新冠病毒无情的肆虐,相信会给每个中国人的记忆中画上重重的一笔.到今天为止,疫情形势依然十分严峻,虽然除湖北外的其他省份已经连续十一天确诊人数下降,但是接下来还有将近至少1.6亿的人口迁 ...
- 用python画出全球疫情趋势变化图
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:谦睿科技 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...
- Python爬取全球疫情数据,实现可视化显示地图数据(附代码)
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 武汉地区,目前已经实现住院患者清零了,国内疫情已经稳定,然而中国以外新冠确 ...
随机推荐
- WordPress 迁移站点更换域名为新域名
使用 wp-cli 工具搜索替换域名的方式更换 WordPress 域名 wp-cli 是一个命令行工具,可以让我们通过命令行安装.更新 WordPress,对 WordPress 执行一些批量操作, ...
- Building Applications with Force.com and VisualForce (DEV401) (四):Building Your user Interface
Dev 401-004:Application essential:Building Your user Interface: Module Agenda1.Custom Applications2. ...
- TensorFlow 卷积神经网络手写数字识别数据集介绍
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 手写数字识别 接下来将会以 MNIST 数据集为例,使用卷积层和池 ...
- 好记性-烂笔头:controller-接收参数方式及注意事项
长时间未使用的传参方式很容易遗忘 或 记忆混乱,虽然都很简单 但往往都是一些小细节打败了你. 小编决定要把他们记录下来. 1):@RequestBody 接收参数 及 注意事项 注意事项: @Requ ...
- TCP 的断包和粘包
以太网中存在一个对于帧的有效数据大小的限制,即 MTU,以太网的 MTU 为 1500 字节. 一.断包 就是说发送端一次发送的消息长度过大,如果超过了 MTU,那么 ip 会对其进行分片. 在网络编 ...
- iOS hash
一.iOS hash 下图列出 Hash 在 iOS 中的应用分析整理 知乎上的一句话: 算法.数据结构.通信协议.文件系统.驱动等,虽然自己不写那些东西,但是了解其原理对于排错.优化自己的代码有很大 ...
- 200行PYTHON代码实现贪吃蛇
200行Python代码实现贪吃蛇 话不多说,最后会给出全部的代码,也可以从这里Fork,正文开始: 目前实现的功能列表: 贪吃蛇的控制,通过上下左右方向键: 触碰到边缘.墙壁.自身则游戏结束: 接触 ...
- Spring钩子接口Aware
前言 我们在编写代码的时候,有的时候想要使用Spring的底层组件,类似于 ApplicationContext, BeanFactory等等 那我们实现Spring提供的钩子方法xxxAware.在 ...
- 徒手生撸一个验证框架,API 参数校验不再怕!
你们之中大概率早已练就了代码的拷贝.粘贴,无敌的码农神功,其实做久了业务功能开发,练就这两个无敌神功,那是迟早的事儿.今天先抛一个小问题,来打通你的任督二脉,就是很好奇的问一下:业务功能开发中,输入参 ...
- 老技术新谈,Java应用监控利器JMX(2)
各位坐稳扶好,我们要开车了.不过在开车之前,我们还是例行回顾一下上期分享的要点. 上期由于架不住来自于程序员内心的灵魂的拷问,于是我们潜心修炼,与 Java 应用监控利器 JMX 正式打了个照面. J ...