前言

        很多小伙伴后台私信我,我想要省市级JSON数据,我已经写了爬虫程序,叫运行下,也搞不定。今天就帮大家把文件爬取下来,免费分享给大家!

爬取关键代码

// 请求各省市县json数据

async function queryJson(list) {

if (!list.length) return;

let index = 1;

const all = list.length;

for (const item of JSON.parse(list)) {

// 一共3000多个,我就模拟前几个就行了 到 adcode = 411602 退出

// if (item.adcode === 411602) {

// console.log("【结束】");

// break;

// }

// const url =

// item.level === "district"

// ? `https://geo.datav.aliyun.com/areas_v3/bound/${item.adcode}.json`

// : `https://geo.datav.aliyun.com/areas_v3/bound/${item.adcode}_full.json`;

// 暂时不考虑 地级市的情况,先爬取 省市级的数据

if (item.level === "district") continue;

const url = `https://geo.datav.aliyun.com/areas_v3/bound/${item.adcode}_full.json`;

// 解析完整的父级名称,直到 parent 为 100000,得到的名称示例 北京市-大兴区

let parentName = "";

var cItem = item;

while (cItem.parent !== 100000) {

if (!cItem.parent) break;

const parent = JSON.parse(list).find((i) => i.adcode === cItem.parent);

parentName = `${parent.name}-${parentName}`;

cItem = parent;

}

const name = `${item.adcode}-${parentName}-${item.name}`;

try {

const { data } = await axios.get(url);

// 输出正在请求的 序号 和总数

console.log(`正在请求 ${index}/${all} ==> ${name}.json`);

// 还要分离 省市县 到不同的文件

saveJson(data, name, item.level);

index++;

} catch (error) {

throw new Error("请求出错");

}

}

}

        在实际请求过程中,发现有些城市是 city 类型,但是请求的地址却不需要 full ,例如济源市:

        因此,需要添加重试逻辑:

console.error("【请求出错】==> ", item.level, item.name, item.adcode);

// 正在重试...

try {

const url = `https://geo.datav.aliyun.com/areas_v3/bound/${item.adcode}.json`;

const { data } = await axios.get(url);

console.error(`正在重试请求 ${index}/${all} ==> ${name}.json`);

// 还要分离 省市县 到不同的文件

saveJson(data, name, item.level);

console.error("【重试请求成功!】");

} catch (error) {

console.error(`【重试失败!,需要手动处理】`, item.level, item.name, item.adcode);

}

世界json文件

        

资源地址

爬取源码

puppeteer-demo: Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome。Puppeteer 默认以 headless 模式运行,但是可以通过修改配置文件运行“有头”模式。无头模式 headless 是否标记无头模式,在创建 browser 是传入配置项实现对浏览器无头模式的控制https://gitee.com/wfeng0/puppeteer-demo相关文章

Puppeteer 使用教程-基础篇(超详细、超全面)-CSDN博客文章浏览阅读6.8k次,点赞8次,收藏32次。Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome。本文涉及了Puppeteer常见常用的API样例,包括爬取图片、视频、cookies设置,字符输入等多方面知识,很全面哦。_puppeteerhttps://blog.csdn.net/weixin_47746452/article/details/131751015?spm=1001.2014.3001.5501Puppeteer 使用教程-实战篇(爬取图片、视频、音频,页面数据)_puppeteer 爬取页面数据、图片、视频、音频-CSDN博客文章浏览阅读1.9k次,点赞4次,收藏9次。续上篇,我们简单讲述一下puppeteer常见的应用场景,包括静态页面数据获取,网络请求获取截取、图片、视频资源下载、自动化测试等,看了绝对有收获。_puppeteer 爬取页面数据、图片、视频、音频https://blog.csdn.net/weixin_47746452/article/details/131762512?spm=1001.2014.3001.5501相关json 数据

puppeteer-demo: Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome。Puppeteer 默认以 headless 模式运行,但是可以通过修改配置文件运行“有头”模式。无头模式 headless 是否标记无头模式,在创建 browser 是传入配置项实现对浏览器无头模式的控制 - Gitee.comhttps://gitee.com/wfeng0/puppeteer-demo/tree/master/map-json

说明

         目前仅是爬取了省市级数据,基本上够用了,我看了下,如果将地级市数据也爬取的话,一共有3238个,在实际的项目中,仅展示地级市的数据好像也没意义,因此这里不做深究,如果实在需要,可以私信,帮大家弄。

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: