技术博客
地区新闻接口:5 分钟接入,从注册到第一条地区新闻

地区新闻接口:5 分钟接入,从注册到第一条地区新闻

作者: 万维易源
2026-09-01
地区新闻接口快速接入Python示例免费接口
# 地区新闻接口:5 分钟接入,从注册到第一条地区新闻 > 接口/接入点:地区新闻接口 · 根据地区查询新闻(170-47)|免费 · POST/GET · 返回 JSON · 适用人群:新注册用户、初级开发者 · 阅读时间:约 5 分钟 ## 核心要点 - 注册后在「我的 AppKey」拿到密钥,拼到请求 URL 的 `appKey` 参数即可调用,无需复杂鉴权。 - 用「根据地区查询新闻」(接入点 47)传入 `areaName=江西` 就能拉到该地区最新新闻列表。 - 返回数据套在 `showapi_res_body.pagebean.contentlist` 里,逐条取 `title`/`source`/`pubDate`/`link` 即可渲染。 ## Why:这跟我有什么关系 如果你在做地方门户、舆情监测、本地生活 App、公众号自动推送,最基础的需求就是「按时拿到某地区的新闻」。地区新闻接口把全国各省/直辖市/特别行政区的资讯聚合好了,免费、无需自己爬新闻源。5 分钟跑通第一次调用,后面只是把结果接到你的页面或库里。 ## What:前置条件与接口速览 | 项 | 值 | |------|------| | 接口编码 | 170 | | 本次接入点 | 根据地区查询新闻(170-47) | | 接口地址 | `https://route.showapi.com/170-47?appKey={your_appKey}` | | 请求方式 | POST / GET | | 鉴权 | URL 参数 `appKey`(在 https://www.showapi.com/console#/myApp 获取) | | 计费 | 免费(有使用档位限制,见 https://www.showapi.com/free-api) | | 返回格式 | JSON | | 本篇必填参数 | 无(所有业务参数均为可选) | ## How:第一步调用 ### 步骤 1:获取 AppKey 登录 https://www.showapi.com → 控制台 → 我的 AppKey,复制你的密钥(形如一串字母数字)。下文用 `YOUR_APPKEY` 占位,替换即可。 ### 步骤 2:发起第一次调用(以江西为例) **Python(requests)** ```python import requests resp = requests.post( "https://route.showapi.com/170-47", params={"appKey": "YOUR_APPKEY"}, data={"areaName": "江西", "page": 1}, headers={"content-type": "application/x-www-form-urlencoded"}, timeout=10, ) data = resp.json() if data.get("showapi_res_code") != 0: raise RuntimeError(data.get("showapi_res_error")) body = data["showapi_res_body"] print("总记录数:", body["pagebean"]["allNum"], " 总页数:", body["pagebean"]["allPages"]) for item in body["pagebean"]["contentlist"]: print(item["title"], "|", item["source"], "|", item["pubDate"]) ``` **cURL** ```bash curl -X POST "https://route.showapi.com/170-47?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ --data-urlencode "areaName=江西" \ --data-urlencode "page=1" ``` **Node.js(fetch)** ```js const resp = await fetch("https://route.showapi.com/170-47?appKey=YOUR_APPKEY", { method: "POST", headers: { "content-type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ areaName: "江西", page: 1 }), }); const data = await resp.json(); if (data.showapi_res_code !== 0) throw new Error(data.showapi_res_error); const list = data.showapi_res_body.pagebean.contentlist; for (const it of list) console.log(it.title, "|", it.source, "|", it.pubDate); ``` ### 步骤 3:在浏览器里渲染 把 `contentlist` 渲染成列表即可:标题(可点 `link` 跳转原文)、来源 `source`、时间 `pubDate`。下一节给出一段最小 HTML+JS Demo。 ```html <!doctype html><html><head><meta charset="utf-8"><title>地区新闻 Demo</title></head> <body><ul id="list"></ul> <script> fetch("https://route.showapi.com/170-47?appKey=YOUR_APPKEY", { method:"POST", headers:{"content-type":"application/x-www-form-urlencoded"}, body:new URLSearchParams({areaName:"江西", page:1}) }).then(r=>r.json()).then(d=>{ const ul=document.getElementById("list"); d.showapi_res_body.pagebean.contentlist.forEach(it=>{ const li=document.createElement("li"); li.innerHTML=`<a href="${it.link}" target="_blank">${it.title}</a> · ${it.source} · ${it.pubDate}`; ul.appendChild(li); }); }); </script></body></html> ``` ## 返回示例与解析 接口统一用系统级字段包裹,业务数据在 `showapi_res_body` 内: ```json { "showapi_res_code": 0, "showapi_res_error": "", "showapi_res_id": "ce135f6739294c63be0c021b76b6fbff", "showapi_res_body": { "pagebean": { "allNum": 1640, "allPages": 82, "currentPage": 1, "maxResult": 20, "contentlist": [ { "title": "望奎要求全县中小学做好汛期安全", "link": "http://...", "pubDate": "2015-06-18 05:38:21", "source": "新浪黑龙江", "desc": "", "areaId": "55818af8085b7bc0c73836d5", "areaName": "黑龙江", "imageurls": [] } ] }, "ret_code": 0 } } ``` - `showapi_res_code`:系统级状态码,0 表示请求成功。 - `showapi_res_body.ret_code`:业务级状态码,0 为成功,其他为失败。 - `pagebean.contentlist`:新闻条目数组,每页最多 `maxResult`(20)条。 ## 进阶 / 边界 - **不传地区参数**:`areaName`/`areaId` 都不传时返回全国混合新闻,适合做「总览」。 - **更新频率**:新闻最快每 10 分钟更新,做定时拉取时注意间隔,别高频打接口(参见免费档位与缓存篇)。 - **ret_code 非 0**:表示本次查询失败,按"其他失败"处理并参考 FAQ 篇排查,文档未枚举具体错误码。 ## FAQ **Q:接口真的免费吗?会有隐藏收费吗?** A:文档标注为免费服务,注册后默认可调用,但「为防止滥用设有使用档次限制」,具体档位以 https://www.showapi.com/free-api 为准,本文不编造数字。 **Q:第一次调用返回空 contentlist 是失败吗?** A:不一定。先看 `showapi_res_code` 与 `ret_code` 是否都为 0;为 0 但列表为空,说明该地区/条件当前没有命中数据,不算失败。 **Q:中文地区名需要 URL 编码吗?** A:用 `requests`/`fetch(URLSearchParams)`/curl `--data-urlencode` 时无需手动编码,库会处理;手写裸 URL 才需要编码。 ## 相关能力与下一步阅读 - [地区新闻接口返回字段全解:pagebean 与 contentlist 一文读懂](https://www.showapi.com/guides/region-news-response-fields-170) - [地区新闻接口:按地区/标题查新闻的参数使用指南](https://www.showapi.com/guides/region-news-query-by-area-170) - **本系列共 12 篇**:查看[地区新闻接口(apiCode 170)官方指南总目录](https://www.showapi.com/guides/region-news-guides-170)