用途
该技能的核心目标是:从 https://www.eceee.org/all-news/ 发现新闻文章 URL;将发现到的条目元数据持久化到 SQLite;抓取并提取每个条目页面的正文文本;把状态和正文写入配套的 entry_content 表,并通过重试安全的更新机制维护。
适用触发条件包括:需要从 eceee 新闻归档页面提取全文;需要对 eceee 新闻链接运行增量全文同步;需要一个支持发现、提取与重试的本地 SQLite 队列。
主要能力
- 发现:从索引页 https://www.eceee.org/all-news/ 中提取 class 为 newslink、且位于 /all-news/news/ 下的锚点标签,作为文章链接来源。
- 抓取与提取:正文提取针对文章主内容区域(mainContentColumn),并移除相关新闻与分享区块。提取路径优先使用 trafilatura(如果已安装且未禁用),否则回退到内置 HTML 解析器。
- 持久化:entries 表保存发现元数据(url、title、published_at、discovered_at、last_seen_at);entry_content 表按 entry_id 保存提取结果(source_url、final_url、http_status、extractor、content_text、content_hash、content_length、status、重试字段与时间戳)。
- 更新规则:按 entry_id 做 upsert。成功时设为 ready,写入文本/哈希/长度并重置重试计数;失败但已有 ready 内容时保留旧内容、更新错误与重试元数据;失败且无 ready 内容时设为 failed、增加重试次数并设置 next_retry_at。
- 重试队列:通过 max_retries 与指数退避控制。
使用方式
先初始化数据库,再执行同步或按需抓取。具体命令如下:
export ECEEE_NEWS_DB_PATH="/absolute/path/to/eceee_news.db" python3 scripts/fulltext_fetch.py init-db --db "$ECEEE_NEWS_DB_PATH"
发现链接并增量抓取全文:
python3 scripts/fulltext_fetch.py sync
--db "$ECEEE_NEWS_DB_PATH"
--index-url "https://www.eceee.org/all-news/"
--limit 50
--min-chars 180
仅发现(刷新 URL 目录,不抓正文):
python3 scripts/fulltext_fetch.py sync
--db "$ECEEE_NEWS_DB_PATH"
--discover-only
按需抓取单个条目(按 ID 或 URL):
python3 scripts/fulltext_fetch.py fetch-entry
--db "$ECEEE_NEWS_DB_PATH"
--entry-id 123
python3 scripts/fulltext_fetch.py fetch-entry
--db "$ECEEE_NEWS_DB_PATH"
--url "https://www.eceee.org/all-news/news/example-slug/"
查看已存储状态:
python3 scripts/fulltext_fetch.py list-entries --db "$ECEEE_NEWS_DB_PATH" --limit 100 python3 scripts/fulltext_fetch.py list-content --db "$ECEEE_NEWS_DB_PATH" --status ready --limit 100
可配置参数包括:--db、ECEEE_NEWS_DB_PATH、--index-url、--discover-only、--limit、--force、--only-failed、--since-date、--refetch-days、--oldest-first、--timeout、--max-bytes、--min-chars、--max-retries、--retry-backoff-minutes、--user-agent、--disable-trafilatura、--fail-on-errors。
错误处理
索引抓取或解析失败会返回可操作的错误。HTTP/网络/内容类型失败按条目记录,不中断整批同步。提取文本短于 --min-chars 视为失败,以避免低质量正文。重试队列由 max_retries 加指数退避控制。
相关文件
参考文档:references/schema.md、references/fetch-rules.md;资源:assets/config.example.json;脚本:scripts/fulltext_fetch.py。
适用场景
适用于需要把 eceee 新闻全文批量或增量同步到本地 SQLite 的数据采集任务,也适合需要本地持久化抓取队列、支持失败重试与状态跟踪的场合。
限制
该技能仅针对 https://www.eceee.org/all-news/ 及其 /all-news/news/ 下的文章链接。关于收费、价格、平台支持范围、抓取效果或运行环境要求,资料中暂未提供。