Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

surveycore-py

Python Async Ruff Pyright

CI

纯 Python 异步问卷 HTTP 提交工具包,支持问卷星、腾讯问卷、 Credamo 见数三大平台

Caution

本项目仅可用于已授权问卷的学习与测试。严禁用于污染第三方问卷数据!

支持平台

  • 问卷星
  • 腾讯问卷
  • Credamo 见数
  • 其他平台(欢迎贡献)

使用方法

环境要求

  • Python 3.11+ (推荐 Python 3.13.15)

安装

uv

uv add surveycore-py

python -m pip install surveycore-py

解析问卷

示例:

import asyncio

import httpx

from surveycore import SurveyClient


async def main() -> None:
    async with httpx.AsyncClient() as http_client:
        client = SurveyClient(http_client)
        survey = await client.parse("https://www.wjx.cn/vm/example.aspx")
        print(survey.title)
        print(survey.questions)


asyncio.run(main())

运行提交任务

示例:

import asyncio

import httpx

from surveycore import RunConfig, SurveyClient


async def main() -> None:
    config = RunConfig(
        url="https://www.wjx.cn/vm/example.aspx",
        target=3,
        concurrency=2,
    )

    async with httpx.AsyncClient() as http_client:
        client = SurveyClient(http_client)
        async for result in client.run(config):
            print(result.attempt, result.success, result.error)


asyncio.run(main())

公开接口

接口 作用
SurveyClient.parse() 识别平台并解析问卷结构。
SurveyClient.submit() 提交一次问卷尝试。
SurveyClient.run() 按指定次数和并发量调度提交。
RunConfig 定义问卷、题目策略和调度参数。
serialize_config() / deserialize_config() 在配置对象与字典之间转换。
dumps_config() / loads_config() 在配置对象与 JSON 之间转换。

公开异常包括:

  • UnsupportedSurveyError:链接或平台不受支持。
  • SurveyUnavailableError:问卷未开放、暂停或到期。
  • SurveyParseError:问卷解析失败。
  • ConfigError:配置无效或 schema 不兼容。
  • SubmissionError:提交阶段错误。

GPL-3.0 License

您有权免费使用、修改和分发该软件。

但若将程序或其衍生作品对外发布,则必须同样以 GPL-3.0 许可开源,完整公开所有修改后的源代码,并保留原始版权声明与免责条款,确保所有使用者都能平等地获得并回馈软件的自由,而不论其分发方式为何。

About

适用于问卷星、腾讯问卷、Credamo见数平台的纯HTTP高并发提交Python工具包

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages