python写自动答题脚本_问卷星的自动答题脚本
import time
from datetime import datetime
from random import randint
from requests_html import HTMLSession
# from spider_wjx.configs import (QUESTION_ID, QUESTION_URL, POST_URL_MAP, QUESTION_INFO, ANSWER_TIMES)
#改成自己的id
QUESTION_ID = 71699967
#問卷星答題地址
QUESTION_URL = "https://www.wjx.cn/m/{}.aspx".format(QUESTION_ID)
#題目數(shù)量,這里只要單選題目的數(shù)量
QUESTION_NUM = 14
# 提交問卷選項的url
POST_URL_MAP = "https://www.wjx.cn/joinnew/processjq.ashx?submittype=1&curID={}&t={}&starttime={}&rn={}"
QUESTION_INFO = '''
題目:{}
選項:{}
隨機(jī)選擇結(jié)果:{}
~~~~~~~~~~~~~~~~~~~~~~
'''
# 回答次數(shù)
ANSWER_TIMES = 200
def parse_post_url(resp):
'''
解析出提交問卷的url
'''
# 找到rn
rn = int(resp.html.search('rndnum="{}"')[0].split('.')[0])
# 提交問卷的時間
raw_t = round(time.time(), 3)
t = int(str(raw_t).replace('.', ''))
# 模擬開始答題時間
starttime = datetime.fromtimestamp(
int(raw_t) - randint(1, 60 * 3)).strftime("%Y/%m/%d %H:%M:%S")
url = POST_URL_MAP.format(QUESTION_ID, t, starttime, rn)
return url
def parse_post_data(resp):
'''
解析出問題和選項
返回post_data
'''
post_data = {'submitdata': ""}
questions = resp.html.find('.fieldset', first=True).find(".field")
print(questions)
for i, q in enumerate(questions):
if i == QUESTION_NUM:
post_data['submitdata'] = post_data['submitdata']+'15$'
return post_data
title = q.find('.field-label', first=True).text
choices = [t.text for t in q.find('.label')]
random_index = randint(0, len(choices) - 1)
choice = choices[random_index]
post_data['submitdata'] += '{}${}}}'.format(i+1, random_index+1)
print(QUESTION_INFO.format(title, choices, choice))
time.sleep(0.5)
# 去除最后一個不合法的`}`
# post_data['submitdata'] = post_data['submitdata'][:-1]
# return post_data
def post_answer(session, url, data):
'''
提交答案
'''
r = session.post(url, data)
print('提交狀態(tài):{}'.format(r.status_code))
def simulate_survey():
'''
模擬回答問卷
'''
session = HTMLSession()
resp = session.get(QUESTION_URL)
url = parse_post_url(resp)
data = parse_post_data(resp)
print(data)
post_answer(session, url, data)
def main():
print('開始模擬填寫問卷,共模擬{}次'.format(ANSWER_TIMES))
for i in range(ANSWER_TIMES):
simulate_survey()
sleep_time = randint(1, 60)
print('第{}次問卷填寫完畢,即將沉睡{}s'.format(i+1, sleep_time))
time.sleep(sleep_time)
if __name__ == '__main__':
main()
總結(jié)
以上是生活随笔為你收集整理的python写自动答题脚本_问卷星的自动答题脚本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python主线程执行_python 并
- 下一篇: c++局域网主动ftp_【Jmeter】