This repository has been archived on 2026-08-07 . You can view files and clone it. You cannot open issues or pull requests or push a commit.
phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, requirements-completed, duration, completed
phase
plan
subsystem
tags
requires
provides
affects
tech-stack
key-files
key-decisions
requirements-completed
duration
completed
08-crawler
01
crawler
playwright
pydantic
zhihu
api-interception
phase
provides
07-login-auth
ZhihuLogin + Cookie management
ZhihuCrawler class with crawl_answer() and crawl_article() methods
AnswerData, ArticleData data models
CrawlResult wrapper
added
patterns
Playwright route interception for content extraction
pydantic data models for structured data
created
modified
kb_workflow/crawler/__init__.py
kb_workflow/crawler/models.py
kb_workflow/crawler/zhihu_crawler.py
tests/test_crawler/__init__.py
tests/test_crawler/conftest.py
tests/test_crawler/test_answer_crawler.py
tests/test_crawler/test_article_crawler.py
tests/test_crawler/test_metadata_extraction.py
use Playwright page.route() for API interception over direct API calls
pydantic models for structured data
TDD workflow with mocking for easy test maintenance
3min
2026-03-17
Summary
实现了知乎问答和专栏内容爬取功能,使用 Playwright 拦截 API 请求获取结构化 JSON 数据。
What Was Built
ZhihuCrawler 类 (kb_workflow/crawler/zhihu_crawler.py)
crawl_answer(url) - 爬取知乎问答,返回 AnswerData
crawl_article(url) - 爬取知乎专栏,返回 ArticleData
API 拦截器 ZhihuApiInterceptor 捕获 /api/v4/answers/ 和 /api/v4/articles/ 响应
DOM 解析备选方案(使用 ZhihuPlaywrightExtractor)
数据模型 (kb_workflow/crawler/models.py)
AuthorInfo - 作者信息(名称、URL token、签名)
ContentMetadata - 内容元数据(作者、点赞数、评论数、时间戳)
AnswerData - 问答数据(ID、问题ID、标题、内容、摘要、元数据)
ArticleData - 专栏数据(ID、标题、内容、摘要、元数据)
CrawlResult - 统一结果包装(成功/失败、内容类型、数据/错误)
Test Coverage
15 个测试全部通过
test_answer_crawler.py - 5 个测试
test_article_crawler.py - 4 个测试
test_metadata_extraction.py - 6 个测试
Commits
a102a75 feat(08-01): create crawler data models and test scaffolding
912773f test(08-01): add failing tests for ZhihuCrawler
aa96bc9 feat(08-01): implement ZhihuCrawler with API interception
Key Decisions
API 拦截 vs 直接 API 调用 : 使用 Playwright page.route() 拦截浏览器请求,自动处理签名和 Cookie
TDD 工作流 : 先写测试,使用 mock fixtures 确保测试可维护性
备选方案 : 当 API 拦截失败时,回退到 DOM 解析
Requirements Completed
CONT-01 : 爬取知乎问答,获取问题标题、描述、回答内容 ✓
CONT-02 : 爬取知乎专栏/文章,获取标题和正文 ✓
CONT-04 : 爬取结果包含作者信息、发布时间、点赞数等元数据 ✓
Self-Check: PASSED