同事做地方资讯站,想在首页放一块今日要闻,问我每日新闻api用哪家。他一开始想爬门户首页,被我劝住了:结构一改就全废,还有合规风险。接口方案有三种,各有各的坑。
聚合平台:注册就能调
天行数据、聚合数据、极速数据都提供新闻接口,按次计费,免费额度通常每天100到500次。请求形如 https://api.tianapi.com/topnews/index?key=你的KEY&num=10,返回JSON,字段一般有title、description、ctime、url。key放在query里,别写进前端代码。
RSS转接口:零成本但要做清洗
新华网、澎湃、少数派都有RSS,用RSSHub或自建解析,把XML转成JSON。好处是免费、稳定、带原文链接;坏处是各家字段不统一,pubDate时区五花八门,摘要里常混HTML标签,入库前要剥标签、统一成UTC。
缓存和限流必须做
- 缓存:新闻十分钟更新一次就够,用Redis存key为news:top:10,TTL设600秒,别每个访客都打一次接口。
- 限流:免费额度按天算,超了直接返回403,代码里要做降级,读上一次的缓存。
- 重试:只对5xx重试两次,间隔1秒,4xx重试没有意义。
字段与合规
至少存id、标题、来源、发布时间、原文链接。列表页只放标题和来源,正文跳回原站,避免被判成全文转载。商用前看清协议,多数聚合平台的免费额度仅限测试。
如果只是自己看,RSS最省事;要给客户交付、要求SLA,就买付费套餐。别把免费key硬编码进小程序,反编译就能拿到,一天额度半小时被刷光。