实际工作需要县以上的行政区域数据,方便做地址数据的清晰。
原数据地址:国家统计局

原数据格式:

爬取后数据:

代码如下:

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]
## 输出Excel
library(openxlsx)
write.xlsx(finish_data,"china_areadata.xlsx")

数据文件

链接:https://pan.baidu.com/s/1nAmUmme7FSkSd6Oxd8CTkg 密码:3vkm
2017-10-15 于杭州

爬取中国行政区域数据相关推荐

  1. 爬取中国最好大学网数据(Python的Scrapy框架与Xpath联合运用)

    前言        大二上学期学校外出实习,做了一个关于爬取中国最好大学网http://www.zuihaodaxue.com/rankings.html的项目用的这个Scrapy框架,多线程还挺好用 ...

  2. Scrapy爬取中国地震台网1年内地震数据

    目标设定 爬取中国地震台网地震数据,并录入Mysql,一次全量爬取,后续增量爬取 前期准备 分析请求路径 通过访问中国地震台网查询地震数据-http://www.ceic.ac.cn/speedsea ...

  3. R语言rvest包3步爬取中国天气网国内所有城市(县)7天实时天气预报数据

    接上一篇用R语言爬取中国天气网单个城市的7天实时天气预报数据,这篇文章综合一下,使用R语言rvest包3步爬取中国天气网国内所有城市(县)7天实时天气预报数据,这里的步数跨度可能有点长,但思路确实是3 ...

  4. 用Python爬取中国各省GDP数据

    介绍 在数据分析和经济研究中,了解中国各省份的GDP数据是非常重要的.然而,手动收集这些数据可能是一项繁琐且费时的任务.幸运的是,Python提供了一些强大的工具和库,使我们能够自动化地从互联网上爬取 ...

  5. 用 Python 爬取 4332 条数据,揭秘甜咸肉粽的江湖!

    作者 | 朱小五 责编 | 屠敏 来源 | 凹凸数据 端午节快要到了,甜咸粽子之争也快要拉开帷幕. 本文准备用Python爬取淘宝上的粽子数据并进行分析,看看有什么发现. 注:本文仅用于学习交流,禁止 ...

  6. python 柱状图上显示字体_Python爬取百部电影数据,我发现了这个惊人真相!

    2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%:国产电影总票房411.75亿元,同比增长8.65%,市场占比 ...

  7. python爬取去哪网数据_用户观点:企查查数据爬取技术与Python 爬取企查查数据...

    主体数据来源是全国工商信用网但是每个省的工商系统都不同,要针对每个省的工商系统单独写爬虫每个省的验证码也不同,也要单独做.企查查的原理不是主动爬去数据,而是有人查询该企业时,如果自己的数据库没有该企业 ...

  8. python 爬虫 表格,python爬虫爬取网页表格数据

    用python爬取网页表格数据,供大家参考,具体内容如下 from bs4 import BeautifulSoup import requests import csv import bs4 #检查 ...

  9. python爬取百部电影数据,我分析出了一个残酷的真相

    2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%:国产电影总票房411.75亿元,同比增长8.65%,市场占比 ...

最新文章

  1. 哪些软件问题也可导致硬盘录像机死机
  2. 我们做了一个医疗版MNIST数据集,发现常见AutoML算法没那么好用
  3. 在线模拟器RollerCoin使采矿业重回游戏
  4. python如何输入空行_在python中,如何在接受用户输入时跳过空行?
  5. 开关电源之PCB安规设计规范
  6. Java生产环境下性能监控与调优详解 大纲 学习感悟
  7. 黄聪:WordPress动作钩子函数add_action()、do_action()源码解析
  8. Vue3学习之第四节:setup()中使用watch、watchEffect 函数
  9. rapidxml对unicode的支持
  10. 计算机论文的字体要求,论文格式要求及字体大小
  11. (内附教程链接及模板下载)如何利用ICEM进行内流道的抽取
  12. Linux文件--文件命名规则
  13. 微信小程序PNG图片去白底
  14. 计算机专业类的数学难吗,学计算机专业难吗数学很差能学吗
  15. mysql my.cnf位置_我如何找到MySQL my.cnf位置
  16. python亲和性分析_数据挖掘入门系列教程(一)之亲和性分析
  17. c++新手入门(不定时更新,已肝18500字)
  18. 计算几何VS解析几何
  19. 联想昭阳K4e电脑系统错误导致屏幕闪烁怎么重装系统?
  20. java基础之线程概述_繁星漫天_新浪博客

热门文章

  1. QQ红包技术方案全解密
  2. php excel多级下拉菜单自动匹配,Excel下拉菜单怎么做 多级联动+自动匹配教程
  3. 文本过长时中间部分用省略号表示。
  4. CUUG 外部表学习笔记
  5. 如何远程家里的linux服务器,如何远程控制家里的电脑或服务器?
  6. Xcode支持iOS6、iOS7版本
  7. 如何使用前端DOM操作制作一个便签:
  8. 听说,你想干掉中介?
  9. 英语 语法检查网站 小记
  10. Zabbix报警 More than 100 items having missing data for more than 10 minutes