Advertisement

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

阅读量:

在JD.com的商品详情页面上定位到了一个针对省市区街道的API接口, 该接口采用JSONP方式处理, 无需携带callback参数即可调用.

接口放在下面

复制代码
    例如查国家(全球国家):
    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
    
    
    js
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/CIobOqKT9ujaD601Y2iWcZPEB3Rz.png)

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

复制代码
    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
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/TgKqNMzwp6YZQFAEy4Icanrj2CXR.png)

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

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

全部评论 (0)

还没有任何评论哟~