查询全球国家城市地区的接口

在 京东商城 商品详情页 找到了一个 省市区街道 API 接口, 这是一个没有跨域问题 JSONP用的接口, 如果我们不传 callback 就可以直接使用。

接口放在下面

js 复制代码
例如查国家(全球国家):
https://fts.jd.com/area/get?fid=-1
// 直接浏览器运行即可
// fid=-1 为国家,查其它可以将fid 为 接口 返回的id,进行下级查询。

// 后面查省直接把fid换成对应国家的id的值
// 查地区直接把fid换成对应省的id的值
// 如查中国的省份(fid换成中国的id)
https://fts.jd.com/area/get?fid=4744
// 查河南省的市(fid换成河南省的id)
https://fts.jd.com/area/get?fid=7
// 查河南省周口市的街道(fid换成周口市的id)
https://fts.jd.com/area/get?fid=527

如果想爬取下来所有 中国的省市区 信息,可以可运行下面的 NodeJS 代码

js 复制代码
const axios = require('axios')
const fs = require('fs')

const sleep = async ms => new Promise(resolve => setTimeout(resolve, ms))

async function getArea(fid = -1) {
  const { data } = await axios.get(`https://fts.jd.com/area/get?fid=${fid}`)
  return data
}

async function makePlainArea(plain = [], fid = 4744) {
  await sleep(500 + Math.random() * 500)
  let areas = await getArea(fid)
  // areas = areas.slice(0, 3) // 测试
  if (!areas.length) {
    return
  }
  for (let area of areas) {
    area.pid = fid
    plain.push(area)
    console.log('即将获取:' + area.name)
    await makePlainArea(plain, area.id)
  }
}

async function main() {
  const plain = []
  await makePlainArea(plain, 4744)
  fs.writeFileSync('./plain-area.json', JSON.stringify(plain))
  console.log('生成完毕')
}

main().catch(console.log)

将 扁平的 数据 转 树结构 参考:

JS 将扁平后的数据 恢复成 树结构

相关推荐
MasonYyp13 小时前
安装npm依赖仓库Verdaccio
前端·npm·node.js
编程的一拳超人2 天前
【元宝搜索开发者征文大赛】四语实战:Java/Python/Go/Node.js 构建 AI 搜索应用全攻略
java·python·golang·node.js·agent
lucas_AI2 天前
今年 2 月就修好的漏洞,10 月才炸:HTTP2Shell 把 Node、Python 一锅端
node.js
SEO_juper3 天前
Node.js 全站死链检测工具:从 sitemap 出发一次找全 404
开发语言·人工智能·python·node.js·seo·外贸独立站
孟陬3 天前
解决动态 import 类型 Any 痼癖
typescript·node.js·bun
Dumbness3 天前
后台管理员把自己锁在门外:RBAC 里「自己的权限只能由别人来减」
安全·node.js
攻城狮白玉4 天前
Node.js 发布紧急安全更新:10 个漏洞,8 枚危险证书被拉黑。附AI修复提示词
node.js
Json____4 天前
用 FastAPI + Vue3 打造一套完整的在线考试系统:从组卷到阅卷的业务闭环实践
后端·node.js·fastapi·it学习·wwwoop.com
Dumbness4 天前
写 MCP 服务器踩的坑:stdout 是协议通道,一行不带换行的日志就能让客户端超时
node.js·mcp
flash俊杰4 天前
ContentPart 联合类型实战:不碰存量消息,怎么给 ChatMessage 加图片
node.js