# nodejs 爬取统计局区划数据
# 1. 介绍
使用 axios 获取网页文档,
使用 cheerio 操作文档的元素。(cheerio 操作文档的方式与 jQuery 一致)
# 2. 示例
获取国家统计局 2023 年的区划数据:
const CONFIG = {
BASE_URL: 'https://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2023',
HOME_PAGE: 'index.html',
};
async function getProvinceList() {
const $ = await this.fetchPageContent(CONFIG.HOME_PAGE);
const list = [];
/**
* @example
* <tr class="provincetr">
* <td>
* <a href="11.html">北京市<br></a>
* </td>
* <td>
* <a href="12.html">天津市<br></a>
* </td>
* </tr>
*/
$('td.provincetr > a[href*=".html"]').each((index, el) => {
const $el = $(el);
const name = $el.text().trim();
const page = $el.attr('href').trim();
const code = page.replace('.html', '').trim();
list.push({ category, name, code, page, parentCode: null });
});
return list;
}
async function fetchPageContent(page, baseUrl = CONFIG.BASE_URL) {
const url = joinUrl(baseUrl, page);
const { data: html } = await axios.get(url);
return cheerio.load(html);
}
function joinUrl(...urls) {
return urls
// Remove slashes before and after
.map((path) => path.replace(/^\/+/, '').replace(/\/+$/, ''))
.join('/')
;
}
# 3. 参考
上一篇: 下一篇:
本章目录