新闻爬虫工程
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_756344a1/news-crawler-engineering。
技能介绍
解决的问题
新闻信息源往往把列表接口、详情接口、反爬、CSR 和图片加载混在一起。若按一次性页面解析器来做,常见问题包括:漏掉 original_source、把栏目简介当成 summary、把所有历史页载入内存、重复入库、翻页在 API 异常时误判为到底,以及海外站点被国内代理拦截。
工作方式
该技能把每个站点视为长期新闻采集系统中的一个 source:
- 先侦察再实现:确认 list API、分页参数、
columnId/channel、详情 URL 规则,并检查是否返回标题、时间、真实来源、图片、摘要和正文。 - 选择采集模式:API 含正文时以 API 为主;list-only 时 API 取列表、详情页取正文;静态 HTML 再解析分页;强反爬先逆向签名和请求重放。
- 先设计数据模型:
get_market_news_info存轻量主表,get_market_news_content存正文、content_html、图片和raw_data;用业务唯一键,而不是只靠news_id。 - 内容提取有优先级:优先 API blocks/paragraphs,其次已知容器 HTML,最后才用
get_text();段落用\n\n分隔,图片按位置插入[图片:caption]。 - 增量与补采:按 source + column 取
MAX(publish_time),无历史回溯默认 90 天,有历史重叠默认 6 小时;逐页去重、解析、入库,并在整页早于阈值时停止。 - 工程化约束:主表和正文表同事务 upsert,保留失败状态;内置崩溃、零入库、高失败率报警;海外站点显式绕过代理,避免
449 Foreign Host Forbidden。
使用场景
- 接手一个新闻源时,先确认列表 API、分页参数、详情 URL 规则,避免盲目解析页面 HTML。
- 构建长期新闻库时,设计主表与正文表,将 `content_html`、图片和 `raw_data` 分离存储。
- 做每日增量采集时,按栏目计算时间阈值,逐页去重、解析、入库,并在整页过旧时停止翻页。
- 处理海外新闻站时,判断是否需要代理,并在配置默认代理时显式传 `proxies={}` 绕过拦截。
适合人员
- 需要为多个新闻源建立稳定采集流水线的后端工程师
- 负责把接口数据清洗入库、维护字段一致性的数据工程师
- 做金融或资讯监控产品、要求区分真实来源和栏目简介的产品工程师
- 需要在反爬站点中提取正文、图片位置并保存失败记录的重构工程师