爬取中国行政区域数据
来源:互联网 发布:云计算和云存储的区别 编辑:程序博客网 时间:2024/05/01 10:27
实际工作需要县以上的行政区域数据,方便做地址数据的清晰。
原数据地址:国家统计局
原数据格式:
爬取后数据:
代码如下:
library(rvest)url <- "http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201703/t20170310_1471429.html"web <- read_html(url)## 爬取原始数据areadata <- web %>% html_nodes('div.TRS_PreAppend')%>% html_nodes("p.MsoNormal") %>% html_nodes("span")%>% html_text()## 辅助函数### 函数功能:计算字符串中空格个数、实际字符个数#### 两个参数:x字符串;type返回值设置,默认返回空格个数trim_compute <- function(x,type="trim_num"){ if(type=="trim_num"){ trim_num <- nchar(x)-nchar(stringr::str_trim(x)) return(trim_num) }else if(type=="char_num"){ char_num <- nchar(stringr::str_trim(x)) return(char_num) }}trim_num <- unlist(lapply(areadata,trim_compute,type="trim_num"))char_num <- unlist(lapply(areadata,trim_compute,type="char_num"))rawdata <- data.frame(areadata = stringr::str_trim(areadata),trim_num,char_num,stringsAsFactors = FALSE)head(rawdata)## char_num为0说明该元素没有值,全部是空格,需要删除rawdata1 <- subset(rawdata,char_num!=0)head(rawdata1)## 拆分编码和名称area_info <- data.frame( area_code = rawdata1$areadata[seq(from = 1, to = 7016, by = 2)], area_name = rawdata1$areadata[seq(from = 2, to = 7016, by = 2)], stringsAsFactors = FALSE )head(area_info)## 拆分省、市、区#### 如果area_code后四位是0000则为省#### 如果area_code后两位是00且后四位不是0000则为地级市is_province <- as.numeric(stringr::str_sub(area_info$area_code,-4,-1) == "0000")is_city <- ((stringr::str_sub(area_info$area_code, -4, -1) != "0000") * (stringr::str_sub(area_info$area_code, -2, -1) == "00"))province_index <- stringr::str_sub(area_info$area_code,1,2)city_index <- stringr::str_sub(area_info$area_code,1,4)area_info <- data.frame( area_info, is_province = is_province , is_city = is_city, province_index = province_index, city_index = city_index, stringsAsFactors = FALSE )head(area_info,n=6)## 先提取省、直辖市、自治区的数据province_data <- subset( area_info, is_province == 1, select = c("area_code", "area_name", "province_index", "city_index") )colnames(province_data) <- c("province_code", "province_name", "province_index", "city_index")## 地级市数据city_data <- subset( area_info, is_city == 1, select = c("area_code", "area_name", "province_index", "city_index") )head(city_data)colnames(city_data) <- c("city_code", "city_name", "province_index", "city_index")## 县区数据county_data <- subset( area_info, is_city != 1 &is_province != 1, select = c("area_code", "area_name","city_index") )head(county_data)colnames(county_data) <- c("county_code", "county_name","city_index")assistdata <- merge(x=province_data,y=city_data,by.x ="province_index",by.y ="province_index",all = TRUE)head(assistdata)assistdata <- assistdata[,c("province_code","province_name","city_code","city_name","city_index.y")]## all = TRUE 东莞这个奇葩没有县区。。。finish_data <- merge(assistdata,county_data,by.x ="city_index.y",by.y ="city_index",all = TRUE)head(finish_data)finish_data <- finish_data[,-1]## 输出Excellibrary(openxlsx)write.xlsx(finish_data,"china_areadata.xlsx")
2017-10-15 于杭州
阅读全文
0 0
- 爬取中国行政区域数据
- Jsoup爬取全国行政区域信息并入库
- 中国行政区域(县区级带坐标经纬度)
- 中国行政区域边界坐标(google)
- 中国期刊数据库元数据信息的多线程爬取
- Python3.x 爬虫 爬取中国天气网数据
- Python爬取中国天气网天气数据
- 爬取中国大学排名
- 如何获取行政区域的边界gps数据
- 中国行政区域划分图 华北,东北,华东,中南,西南,西北
- R语言爬取中国天气网单个城市实时天气预报数据
- 按行政区域范围下载并裁剪卫星地图数据教程
- 按行政区域范围下载并裁剪卫星地图数据教程
- 中国知网爬取问题(1)
- python爬虫定向爬取中国大学排名
- 中国天气网城市代码爬取
- 中国大学排名定向爬取实例
- 爬取高考数据
- Java Properties集合 文件清单列表获取
- TensorFlow基础
- 初学者易上手的SSH-struts2 02Action获取表单数据-通配符
- 浮动之京东登录页面
- java/bin下没有javac
- 爬取中国行政区域数据
- 涵盖最广的计算机编程学习资料
- 电脑系统经常出现蓝屏现象, 分析各种蓝屏故障分析
- linux下openCV两摄像头同时工作---基于树莓派3
- Java多线程系列(二)—线程安全
- idea中git远程版本回退
- 41-42-内存操作经典问题
- C# 对文件操作
- MongoDB学习