问卷星的自动答题脚本
生活随笔
收集整理的這篇文章主要介紹了
问卷星的自动答题脚本
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import time
from datetime import datetime
from random import randintfrom 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)#題目數量,這里只要單選題目的數量
QUESTION_NUM = 14# 提交問卷選項的url
POST_URL_MAP = "https://www.wjx.cn/joinnew/processjq.ashx?submittype=1&curID={}&t={}&starttime={}&rn={}"QUESTION_INFO = '''
題目:{}
選項:{}
隨機選擇結果:{}
~~~~~~~~~~~~~~~~~~~~~~
'''# 回答次數
ANSWER_TIMES = 200def parse_post_url(resp):'''解析出提交問卷的url'''# 找到rnrn = 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 urldef 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_datatitle = q.find('.field-label', first=True).textchoices = [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_datadef post_answer(session, url, data):'''提交答案'''r = session.post(url, data)print('提交狀態:{}'.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()
總結
以上是生活随笔為你收集整理的问卷星的自动答题脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020年度博客之星发榜了,第一次参加,
- 下一篇: 百度之星比赛规则