数据源 - LowEndTalk Offers RSS(含完整正文) - LowEndBox RSS(按 category + 正文规格密度过滤非优惠文章) - 跨源去重(厂商+价格+配置指纹;数据不足时拒绝合并) 抽取内核(确定性正则,无 LLM) - 规格/价格/折扣/活动性质/地点/CPU 型号 - 拍平 HTML 表格重建(按列序位置推断,解决裸容量无语义问题) - 库存判定:商家回帖表态 > 帖文关键词 > 用户提及(弱证据) - 语境校验:疑问句/否定句/非库存对象/促销资格四类误判防线 - 末页优先抓取回帖(实测商家表态集中在回帖流 75%-100% 位置) 工程化 - 包结构分工明确,配置支持环境变量(可绑自有域名) - 124 个 pytest 用例;BERO 十周年帖为黄金样本 - GitHub Actions 每 6 小时抓取 + 定时提交 + 可选 rsync 部署 - 两种部署方案(Actions+自有服务器 / 纯服务器 cron),均含 「记录数为 0 则拒绝发布」安全网 - legacy/ 保留重构前脚本,供回归比对(19 字段零回归差异) 零运行时依赖(仅 Python 标准库);产物为纯静态文件。
17 lines
644 B
Python
17 lines
644 B
Python
"""letdeals — LowEndTalk / LowEndBox VPS 优惠聚合工具。
|
||
|
||
模块划分(参考 hosting-deals-tracker 的工程结构):
|
||
|
||
config 运行配置(路径、阈值、站点与域名)
|
||
http 带重试的 HTTP 抓取
|
||
textutil HTML 清洗、单位换算、表格重建
|
||
extract 字段抽取(规格/价格/折扣/活动性质/地点)
|
||
replies 回帖抓取与库存表态判定
|
||
sources 数据源(LET Offers RSS / LowEndBox RSS)
|
||
pipeline 编排:采集 → 抽取 → 记录
|
||
render 渲染:Markdown + 静态站
|
||
cli 命令行入口
|
||
"""
|
||
|
||
__version__ = "0.3.0"
|