Stata 爬虫:如何爬取并清洗民政部行政区划代码数据

  • 下载行政区划代码(Stata 爬虫)
  • Stata 爬虫数据清洗
  • 与主数据对接(merge)

这里使用的行政区划代码数据来自于 民政部:2020 年 12 月中华人民共和国县以上行政区划代码

首先网页爬取和数据导入。使用 copy 命令,可以在当前目录生成 district_code.txt 文件,这里存储的是网页源码。接着使用 infix 将 TXT 文件导入 Stata。

从导入的结果(上图右侧)来看,我们想要的区划名称和区划代码的存储位置都很有规律,可以利用正则表达式进行提取。

我们希望分别将区划代码和区划名称伸展成两个变量(效果见下图⑥),我这里是先「克隆」( clonevar )一个完全相同的变量,然后一个变量保留区划代码(destring,下图③),另一个变量保留区划名称(下图④),然后利用 carryforward 向下填充区划代码(下图⑤),最后保留区划名称非空值、给变量重命名即可完成目标(下图⑥)。

推荐阅读:
Stata 爬虫:爬取地区宏观数据| 连享会主页
详解 stata 爬虫抓取网页上的数据 part 1 - 简书
详解 stata 爬虫抓取网页上的数据 part 2 - 简书

** 爬取并清洗「民政部行政区划代码」 **
copy "http://www.mca.gov.cn/article/sj/xzqh/2020/20201201.html" "district_code.txt"
    infix strL v 1-20000 using "district_code.txt", clear
    keep if ustrregexm(v, "<td.*")
    drop if ustrregexm(v, "<td.*></td>")
    drop if ustrregexm(v, ".*width.*")
    replace v = ustrregexra(v, "</td>|</span>|\s", "", .)
    replace v = ustrregexra(v, ".*>", "", .)
    clonevar v1 = v
    destring v,replace force
    replace v1 = "" if (v != .)
    carryforward v, replace
    drop if v1 == ""
    rename (v v1) (district_code district_name)
save "district_code.dta", replace 
image
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容