Skip to content

[任务] 试抓:抓取节点这边 #46

Open

Description

@JunieXD

关联与状态

路线图 #2,一期。状态:进行中,@zzsky233 认领,PR #101 按审查意见修改中。配置的格式已定(#6,见开发约定 §2.1),LLM 用 DeepSeek V4.1 Flash(#18)。网站那一半是 #38,两边按已经定好的接口各做各的。有问题直接在这里留言。

目标

管理员接入来源时先「试抓」:抓取节点抓下列表页,让 LLM 认出列表、标题、日期和翻页在哪,生成配置;再用这份配置抓一遍,把条目和配置交回网站,管理员看过再保存。之后每天按配置抓,不再问 LLM(总体设计 §7.2)。这个任务做抓取节点这一半。

已经有的

  • 项目骨架:crawler/ 是 Python 3.14 + uv 的项目,装依赖 uv sync,跑全部检查 ./check.sh(格式、lint、Pyright 严格模式、测试)。命令见 AGENTS.md。
  • 一轮的流程:crawl/rounds.py 的 crawl_source 已经把一个来源的一轮串好:读列表 → 初筛 → 读正文和附件 → 抽取 → 交结果。四步作为 Steps 传进来,签名和交接的数据写在那里,测试的写法见 rounds_test.py。抓不成时抛 FetchError 或 StepError,流程会把原因记进抓取记录(开发约定 §2)。
  • 请求层:所有对来源网站的请求都经过 crawl/fetch.py 的 Fetcher,它管 UA、同一网站一次一个请求和间隔,不要自己用 httpx 发请求。
  • 和网站交接的类型:crawl/contract.py 由网站的接口定义生成,不手改(接口 §6)。
  • 接口:领活时 Work.probes 里有要试抓的地址、要不要浏览器、可选的配置;结果用 website.probe() 交 ProbeReport(条目、生成的配置、失败原因、用量)。

范围

  1. 试抓:
  2. 交结果:把条目、生成的配置和用量交回网站。抓不成的照实写明原因。
  3. 安全:页面内容只当材料交给模型,不让页面里的文字左右模型(AGENTS.md · 可靠与安全);模型生成的配置用 [任务] 读列表:通用抓取、配置和往回翻页 #6 的 Pydantic 定义校验。
  4. 入口([任务] 抓取节点的入口和 Dockerfile #45)领到试抓时调这里。
  5. 提示词按缓存命中组织:固定的规则和配置的格式放最前面,每个列表页的内容放最后,前面的部分每次一字不差,好让 DeepSeek 的缓存命中、少花钱。规则见 [任务] 抽取接进一轮 #44 的范围第 5 条,谁先做谁写进总体设计 §8.6。

建议的第一步

在本 Issue 留言认领。

验收标准

  • 给一个通用抓取取不对的列表页,能生成可用的配置并交回条目
  • 测试用保存的页面和固定的模型响应,./check.sh 通过

Activity

  1. added
    task可以认领的具体工作
    crawler抓取节点:抓取、初筛、抽取
    on Oct 27, 2026
  2. zzsky233 commented on Nov 10, 2026

    @zzsky233

    认领

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

crawler抓取节点:抓取、初筛、抽取task可以认领的具体工作

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions