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

yizhihongxing

我会为您详细讲解如何利用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如何处理大数据?3个技巧效率提升攻略(推荐)

    那就让我来详细讲解一下“Python如何处理大数据?3个技巧效率提升攻略(推荐)”的完整攻略,包含以下三个技巧: 技巧一:使用适当的数据结构 在处理大量数据时,数据结构的选择非常重要。Python 中的列表、元组、集合以及字典等都是常见的数据结构,但它们的性能各不相同。在数据量比较大的情况下,应该选择性能更好的数据结构来存储和处理数据,比如使用 Numpy …

    python 2023年5月13日
    00
  • 如何在Python中查询PostgreSQL数据库中的数据?

    以下是在Python中查询PostgreSQL数据库中的数据的完整使用攻略。 使用PostgreSQL数据库的前提条件 在使用Python连接PostgreSQL数据库之前,确保已经安装了PostgreSQL数据库,并已经创建使用数据库和表同时,需要安装Python的驱动程序,例如psycopg2。 步骤1:导入模块 在Python中使用psycopg2模块…

    python 2023年5月12日
    00
  • Python3 sys.argv[ ]用法详解

    当我们在命令行中运行 Python 脚本时,可以通过 sys.argv 获取脚本执行时传入的参数。sys.argv 是 Python 的内置模块 sys 中的一个变量,它是一个字符串列表,其中包含了命令行参数列表。sys.argv[0] 表示脚本本身的文件名, sys.argv[1:] 则表示传入的参数列表。 以下为 sys.argv 的常见用法及示例: 获…

    python 2023年6月2日
    00
  • python小技巧——将变量保存在本地及读取

    针对“python小技巧——将变量保存在本地及读取”这个话题,我给出以下完整攻略: 标题 1. 为什么需要将变量保存在本地? 在Python程序开发中,我们经常需要处理一些大量数据的情况,这些数据可能来自于文件、数据库或网络。当我们需要对这些数据进行多次复杂计算或处理时,很容易造成程序运行速度缓慢或者出现内存溢出的情况。而将这些数据保存在本地,则可以大大提高…

    python 2023年6月2日
    00
  • python:批量统计xml中各类目标的数量案例

    下面是关于“Python:批量统计xml中各类目标的数量”这个案例的完整攻略。 案例背景 在数据处理中,经常会碰到需要批量处理多个XML文件,比如统计这些XML文件中各类目标的数量,比如统计所有XML文件中person的数量。本案例将使用Python来实现这个目标。 实现步骤 确定目标:需要统计每个XML文件中指定标签出现的次数。 获取所有需要处理的XML文…

    python 2023年6月3日
    00
  • Python使用future处理并发问题方案详解

    Python使用future处理并发问题方案详解 背景 在Python的并发编程中,有多种处理方式,其中就包括了使用concurrent.futures模块中的Future类进行并发编程的方案。本文将详细讲解这种方案,包括它的基本概念、使用方法、注意事项和示例。 概念 Future是一个抽象的概念,它表示未来承诺完成的操作。例如,如果你向网站发送一个请求,此…

    python 2023年5月13日
    00
  • Python operator进行归约

    Python中的operator模块提供了许多用于归约(reduce)操作的函数。归约操作是指将庞大的数据聚合成单一的结果,例如求和、求乘积、求最大值等。本文将详细介绍如何使用Python operator模块中的函数进行归约操作。 使用方法 在使用operator模块进行归约操作时,需要先导入它: import operator 接下来可以使用operat…

    python-answer 2023年3月25日
    00
  • Python实现定时执行任务的三种方式简单示例

    让我来为您详细讲解“Python实现定时执行任务的三种方式简单示例”的完整攻略。 1. 背景介绍 在一些需要间隔时间执行任务的场景中,我们通常需要使用定时任务技术。Python是一门非常流行的编程语言,通过Python,我们可以很方便地实现定时任务。本文将介绍Python中三种常见的实现定时任务的方式,并在每种方式下给出一个简单的示例。 2. 定时任务三种方…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部