{"repo":"malyjacob/zujuan","free":true,"listed":false,"github":"https://github.com/malyjacob/zujuan","clone":"git clone https://github.com/malyjacob/zujuan.git","description":"用于从组卷网（zujuan.xkw.com）抓取初高中数学题目、答案和解析。","language":"TypeScript","stars":21,"topics":["education","math","scraper"],"license":null,"category":"scrapers-browser-automation","readme_excerpt":"组卷网初高中数学题目抓取工具 用于从组卷网（zujuan.xkw.com）抓取初高中数学题目、答案和解析。 功能特性 - 科目限定 ：专注初高中数学，工具自动适配高中（gzsx）和初中（czsx）两套 URL 体系 - 多维筛选 ：支持按题型、难度、年份、年级、排序方式筛选题目 - 自动登录 ：扫码登录，登录状态持久化 - 同步抓取 ：题目截图 + 答案图片下载 - 视觉 OCR ：通过视觉大模型 API 将题目图片和答案图片转为 Markdown 文字，几何示意图自动忽略 - 示例图分离 ：题目中的插图单独下载，截图时自动隐藏，保持纯文字截图 - 持久化浏览器 ：浏览器一次启动、多次抓取，减少资源占用、降低反爬风险 - 并行下载 ：多张答案图片、示例图同时下载，全程非阻塞 - 云端部署 ：支持无头模式，可部署在服务器环境 - 文档导出 ：抓取完成后自动生成 HTML 和 Markdown 文档，支持多主题切换 安装 npm install 会自动将知识点树文件复制到 /.zujuan-scraper/ 目录。 快速开始 1. 启动浏览器并登录 首次使用会弹出二维码，用手机微信扫码登录（60秒内）。登录成功后浏览器在后台运行。 2. 抓取题目 3. 关闭浏览器 --- 命令详解 start 命令 启动浏览器并完成登录（阻塞模式，登录成功后自动退出）。 选项： 选项 说明 默认值 ------ ------ -------- -g, --grade 年级： high =高中 middle =初中 high （高中） 工作流程： 1. 检查端口是否已有浏览器运行（通过 HTTP 请求 /json/version ） 2. 如有已有浏览器，尝试 CDP 连接复用；否则启动新 Chromium 进程 3. 访问组卷网，检查登录状态 - 已登录 ：直接继续 - 未登录 ：显示二维码，等待手机微信扫码（60秒超时） 4. 保存登录状态（ storage-state.json ）和浏览器状态（ .browser-state.json ） 5. 退出命令，浏览器在后台保持运行 提示 ： start 仅需运行一次，浏览器启动后可持续使用，可多次执行 scrape 命令。 --- scrape 命令 从已启动的浏览器抓取题目。 前提条件 ：必须先运行 start 命令启动浏览器。 必填选项： 选项 说明 ------ ------ -k, --knowledge 知识点节点 ID（从 list 命令获取） 可选选项： 选项 说明 默认值 ------ ------ -------- -t, --type 题型，详见下方题型说明 全部题型 -d, --difficulty 难度，详见下方难度说明 全部难度 -y, --year 年份（2026/2025/2024/2023/-1，-1表示更早） 全部年份 -g, --grade 年级： high =高中 middle =初中 配置中的 grade -r, --order 排序： latest / hot / comprehensive 配置中的 order -l, --limit 最大抓取数量（1-10） 10 -mc, --multi-count 多选题答案数量（2/3/4+） 不限制 -fc, --fill-count 填空题空数（1/2/3+） 不限制 -p, --page 分页页码（第2页起为 o2p2 格式） 1 -ll, --log-level 日志级别： quiet / normal / verbose ","default_branch":null,"files":null,"tree":[],"storefront":"/r/malyjacob","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/malyjacob/zujuan/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}