python自动填写问卷星问卷以及提交问卷等功能

我会为您详细讲解如何利用Python实现自动填写问卷星问卷并提交问卷的两种方法。

方法一:使用selenium库模拟人工操作

  1. 确认所要填写的问卷星问卷的URL,保存到一个变量中:
url = "https://www.wjx.cn/..."
  1. 使用selenium库打开浏览器(需要预先安装好对应的浏览器驱动),访问问卷星问卷网址:
from selenium import webdriver

driver = webdriver.Chrome() # 这里以Chrome浏览器为例,需先下载对应驱动
driver.get(url)
  1. 输入问卷的全部选项或问答内容,可通过查看DOM元素获取需要的元素标签或属性(以单选题为例):
from selenium.webdriver.common.keys import Keys

# 获取单选框按钮元素
radio_buttons = driver.find_elements_by_css_selector("ul[role='radiogroup'] li label input")

# 遍历单选框按钮,模拟操作选择选项
for radio in radio_buttons:
    if radio.get_attribute('value') == '1': # 假设选项1为正确答案
        radio.click()
        break
  1. 提交问卷
submit_button = driver.find_element_by_css_selector("button.submitbutton")
submit_button.click()

# 关闭浏览器
driver.quit()

方法二:通过模拟网络请求实现自动填写问卷星问卷

  1. 确认所要填写的问卷星问卷的URL和问卷的ID,保存到变量中(ID为问卷星生成的识别id):
url = "https://www.wjx.cn/..."
wjx_id = "52633322"
  1. 分析接口,获取问卷题目信息和默认答案
import requests
import json

response = requests.get(f"https://www.wjx.cn/joinnew/processjq.ashx?curid={wjx_id}&starttime={int(time.time()*1000)}")
data = json.loads(response.text)

questions = [] # 保存问卷题目信息和默认答案

for table in data['Tables']:
    for row in table['Rows'][1:]:
        question = {}
        answer = ""

        for cell in row['Cells']:
            if cell['Column']['ColumnName'] == "QuestionName":
                question['title'] = cell['Answer']
            elif cell['Column']['ColumnName'] == "Type":
                question['type'] = cell['Answer']
            elif cell['Column']['ColumnName'] == "Require":
                question['required'] = cell['Answer']

        try:
            # 多选题、填空题等可能有默认答案,需判断
            answers = row['Cells'][-1]['Data'].split(',')
            if answers[0] != '':
                answer = answers
        except:
            pass

        question['answer'] = answer
        questions.append(question)

print(questions)
  1. 模拟post请求提交问卷
data = {
    'submitdata': '',
    't': int(time.time()*1000),
    'pyid': '',
    'wjxid': wjx_id,
    'curID': wjx_id,
    'newSid': '0',
    'temp': '0',
    'sms': '',
    'isCheckCode': '',
    'checkCode': '',
    'tj': '{" latitude":""," longitude":""}',
    'scroll': '0',
    'submittype': '1',
    'ktm': ''
}

# 根据分析的接口,包装要提交的答案
for question in questions:
    if question['type'] == "1": # 单选题类型
        data['submitdata'] += f"{question['title']}${question['answer'][0]},"
    elif question['type'] == "2": # 多选题类型
        data['submitdata'] += f"{question['title']}$:"

        for answer in question['answer']:
            data['submitdata'] += f"{answer},"
        data['submitdata'] = data['submitdata'][:-1] + ';'
    elif question['type'] == "3": # 填空题类型
        data['submitdata'] += f"{question['title']}${question['answer'][0]},"
    elif question['type'] == "4": # 问答题类型
        data['submitdata'] += f"{question['title']}${question['answer'][0]},"

post_response = requests.post("https://www.wjx.cn/joinnew/processjq.ashx", data=data)
print("提交成功") if post_response.status_code == 200 else print("提交失败")

以上就是两种自动填写问卷星问卷的方法,可以根据实际需求选择使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python自动填写问卷星问卷以及提交问卷等功能 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • python如何在终端里面显示一张图片

    要在终端里显示图片,需要使用一些Python库。其中一种流行的库是Pillow,它有一个子库PIL.Image可以加载和处理图像文件。要在终端中显示图像,可以使用如下的步骤: 安装Pillow库 !pip install Pillow 加载图像文件并将其转换成ASCII码表示 可以使用PIL.Image的open()方法将图像文件加载到Python中。然后使…

    python 2023年5月18日
    00
  • 使用python os模块复制文件到指定文件夹的方法

    使用python os模块可以很方便地复制和移动文件。下面是使用os模块复制文件到指定文件夹的步骤: 1.导入os模块 要使用os模块,需要在代码开始时先导入该模块。可以使用以下语句导入os模块: import os 2.使用shutil模块中的copy()函数复制文件 在os模块中没有直接的复制文件的函数,但是可以使用shutil模块中的copy()函数来…

    python 2023年6月2日
    00
  • Python查找文件中包含中文的行方法

    在Python中查找文件中包含中文的行,可以使用正则表达式来匹配中文字符。本文将详细讲解Python查找文件中包含中文的行方法,并提供两个示例说明。 步骤一:了解中文字符编码 在使用正则表达式匹配中文字符前,我们需要了解中文字符的编码方式。在Python中,中文字符通常使用UTF-8编码。因此,我们可以使用UTF-8编码来匹配中文字符。 步骤二:编写正则表达…

    python 2023年5月14日
    00
  • 状态机的概念和在Python下使用状态机的教程

    状态机的概念 状态机(英文:Finite-state machine,缩写为FSM),又称有限状态自动机,简称状态自动机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态机是描述对象(通常为计算机程序、计算机内部操作或者电路)在其生命周期中所经历的状态转变以及引起状态转变的事件等的方法。 在实际编程中,状态机常被用于解决诸如流程控制、自动…

    python 2023年5月23日
    00
  • 使用遗传算法求二元函数的最小值

    使用遗传算法求解二元函数$ f(x,y) $的极小值问题通常可以按照以下步骤进行: 1. 确定优化目标 遗传算法的优化过程需要一个适应度函数来评估每个个体的优劣程度。对于二元函数的极小值问题,通常可以将优化目标定义为: $$\min f(x, y)$$ 2. 确定编码方式 在遗传算法中,个体一般采用二进制编码方式。对于二元函数的极小值问题,可以采用以下方式进…

    python 2023年6月3日
    00
  • Numpy掩码式数组详解

    下面是 “Numpy掩码式数组详解” 的完整攻略: 1. 什么是 Numpy 掩码式数组? Numpy 掩码式数组是一种用布尔数组来标识有效和无效值的 Numpy 数组。掩码式数组可以通过对主数组进行逐元素判断,来标记其中的眼看出现了无用数据,并将其从主数组中过滤出来。 2. 如何创建一个 Numpy 掩码式数组? 我们可以使用 numpy.ma 中的 ma…

    python 2023年6月6日
    00
  • python中round函数保留两位小数的方法

    下面是“Python中round函数保留两位小数的方法”的完整攻略: 方法一:使用round函数 round函数是Python 内置函数,通常用于四舍五入值,并且可以指定保留的小数位数。 a = 3.1415926 b = round(a, 2) print(b) 结果将会输出 “3.14”。 在上述代码中,round() 函数的第一个参数是原始数据,第二个…

    python 2023年6月3日
    00
  • 详解Python 函数特性

    下面就是Python函数特性及使用方法的完整攻略。 函数特性 函数是一段可执行代码,将一组值作为输入来处理,并返回一个值作为输出。Python函数的一些特性如下: 可以有默认参数,缩短调用代码; 可以有不定长参数,可处理可变数量的参数; 可以返回多个值; 可以嵌套多层函数; 可以将函数作为参数传递给其他函数。 函数定义 定义一个函数,需要使用 def 关键字…

    python-answer 2023年3月25日
    00
合作推广
合作推广
分享本页
返回顶部