node.js实现网络爬虫获取区划代码和城乡划分代码
由于公司项目需要,需要开发网络爬虫,爬取区划代码和城乡划分代码
具体是从以下网址获取数据
2018年统计用区划代码和城乡划分代码(截止2018年10月31日)
- 安装依赖
npm install cheerio //检索所需数据
npm install request
npm install request-promise //远程访问页面
npm install iconv-lite //编码转换
2.页面编码问题说明
页面中使用的是gb2312,如果直接远程获取页面源码内容,会出现乱码现象。处理方案如下:
- 配置 request-promise的options
const rp = require('request-promise');let options = {method: 'GET',uri: url,encoding: null
};
let body = await rp(options).catch(function (err) {reject(err);
});
这样配置此时获取到的body就是二进制流数据
- 转码操作
使用iconv-lite对body进行处理
const iconv = require("iconv-lite");body=iconv.decode(body, 'gb2312').toString();
使用cheerio解析Body
以首页页面为例,cheerio 用法与jquery类似
使用谷歌浏览器查看元素
let $ = cheerio.load(body);let node = $('html').find(`.provincetr td a`);let json = {};json.province_name = $(node[0]).text();json.url = $(node[0]).attr('href');json.province_id = json.url.substring(0, 2) + "0000000000";
更多用法可以参考cheerio说明
完整代码
const rp = require('request-promise');
const cheerio = require('cheerio');
const iconv = require("iconv-lite");let getNeedContent = (url) => {return new Promise(async (resove, reject) => {try {let options = {method: 'GET',uri: url,encoding: null};let body = await rp(options).catch(function (err) {reject(err);});body = iconv.decode(body, 'gb2312').toString();let $ = cheerio.load(body);let node = $('html').find(`.provincetr td a`);let list = [];for (let i in node) {if (!isNaN(parseInt(i))) {let json = {};json.province_name = $(node[i]).text();json.url = $(node[i]).attr('href');json.province_id = json.url.substring(0, 2) + "0000000000";list.push(json);}}resove(list)} catch (err) {reject(err)}})
}getNeedContent("http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/index.html").then(res => {console.log(JSON.stringify(res));
}).catch(err => {console.log(err.message)
})
node.js实现网络爬虫获取区划代码和城乡划分代码相关推荐
- Node.js实现网络爬虫
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.必要工具安装 二.爬取前操作 三.爬取新闻数据 四.建立个人网页展示爬取内容 总结 前言 网络爬虫是按照一定规则自 ...
- Python爬虫练习五:爬取 2017年统计用区划代码和城乡划分代码(附代码与全部数据)
本文仅供学习,需要数据的文末有链接下载,请不要重复爬取. 最近工作中,因为统计用区划代码和城乡划分代码更新了最新的2017版,需要爬取最新的数据.于是乎,本次花了一定精力,将整个2017版数据完完整整 ...
- 获取全国统计用区划代码和城乡划分代码并写入数据库
背景:业务需要全国省市区的划分以及3级级联,正好想起2018年曾经抓取过国家统计局网站的去全国统计用区划代码和城乡划分代码,原资源的地址:2018年全国统计用区划代码和城乡划分代码.sql-MySQL ...
- Python获取[2016年统计用区划代码和城乡划分代码(截止2016年07月31日)]
#!usr/bin/env python #-*- coding:utf-8 -*- import requests import re import time ##系统初始化 urlHeader=& ...
- python爬虫练习五(补充): 2018年统计用区划代码和城乡划分代码(附代码与全部数据)
之前爬取过2017年的数据 详见 Python爬虫练习五:爬取 2017年统计用区划代码和城乡划分代码(附代码与全部数据) ,下面有评论说广东省的数据缺少了东莞与中山两个市的数据,检查网页结构发现确实 ...
- [数据][json格式] 2016年统计用区划代码和城乡划分代码
[数据][json格式] 2016年统计用区划代码和城乡划分代码 2013 年的时候写过一篇 [数据][xml格式] 2012年统计用区划代码和城乡划分代码. 到了今天,我需要某省的省市县乡村五级数据 ...
- 城市筛选数据(根据2020年度全国统计用区划代码和城乡划分代码更新维护的标准)
根据2020年度全国统计用区划代码和城乡划分代码更新维护的标准,整理的城市联动筛选数据: /* 根据2020年度全国统计用区划代码和城乡划分代码更新维护的标准 */ var cityList = [{ ...
- 区划代码和城乡划分代码
区划代码和城乡划分代码的数据 访问地址:http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2021/index.html 前段时间写了一个程序,用来下载 ...
- 2018年统计用区划代码和城乡划分代码(截止2018年10月31日)(数据及python爬虫代码)
统计局网站的数据汇总. 细粒度,到最后一级(一般为5级,网站上少部分地区为4级). 数据编码格式为utf8,以便显示名称中的生僻字,请使用合适的文本工具打开. 这里有python爬虫代码和所需库.爬取 ...
- Java 爬取国家统计局统计用区划代码和城乡划分代码
插入速度比较慢,建议修改成批量插入. 用的 Spring Boot2.MyBatis Plus(Jdbc 都行,随便你).Junit5.okhttp.jsoup.dozer(你可以手动赋值,没几个属性 ...
最新文章
- Py之wxPython:wxPython的简介、安装、使用方法之详细攻略
- nginx正向代理https,zabbix内网实现企业微信告警
- VB.NET在线升级程序源代码,可以独立使用
- Golang QRCode 生成实现
- 友元(友元函数、友元类和友元成员函数) C++
- 计算机网络信息安全参考文献,最新网络信息安全参考文献 网络信息安全参考文献有哪些...
- IAR的破解、K60项目的设置
- Linux下测试sdio,浅析Linux下sdio接口对sd卡硬件检测流程
- ssm项目搭建(tomcat配置)详解
- Python scrapy 爬取拉勾网招聘信息
- 入侵防御系统 IPS
- VirtualBox开启无缝模式——调节虚拟机窗口大小
- 小白如何上手几款微信小程序UI组件库
- Java excel导出压缩zip并加密(拿起即用,有用请点赞,不做白嫖怪!)
- 忘记服务器root用户密码
- 软件过程与建模学习之:Quality Management
- Openlayers 图形要素 Feature 移动和编辑
- ngrok 搭建内网穿透
- Sony大法的Music Center for PC歌曲一直显示未分析的解决办法
- lxf官方网站学习手册python基础