- 下载行政区划代码(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