查看原文
其他

Stata爬取七普人口数据

爬虫俱乐部 Stata and Python数据分析 2023-01-01


本文作者:郭培军,河南大学经济学院

本文编辑:赵微微

技术总编:李婷婷

Stata&Python云端课程来啦!

      好消息好消息,爬虫俱乐部开辟小鹅通战场!!爬虫俱乐部隆重推出小鹅通网络课程,将Stata基础课程Stata进阶课程Python课程都上传至小鹅通平台,欢迎大家多多支持订阅!报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台留言哦。如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~

引言
第七次全国人口普查是中国在2020年开展的全国人口普查。普查标准时点是2020年11月1日零时,彻查人口出生变动情况以及房屋情况。普查对象是普查标准时点在中华人民共和国境内的自然人以及在中华人民共和国境外但未定居的中国公民,不包括在中华人民共和国境内短期停留的境外人员。普查主要调查人口和住户的基本情况,内容包括:姓名、公民身份证号码、性别、年龄、民族、受教育程度、行业、职业、迁移流动、婚姻生育、死亡、住房情况等。小编这次就带领大家爬取七普的人口数据供大家学习交流~数据爬取

首先,我们进入此次爬取的网站,红黑人口库(https://www.hongheiku.com/)

从页面中我们可以发现,网站上方已经给我们分好了省、市、区县的排名情况,我们进入各省排名的网页后,查看该网页源码:

发现我们需要的信息都保存在源码中,并且都在一行,这当然是我们愿意看到的情况,提取起来十分方便。接下来我又检查了市级和区县级的网页源码,情况基本上大同小异。

确定了没有什么复杂的问题后,我们话不多说,直接开干,代码如下:

**省级人口数据clear allcap mkdir E:\人口数据cap mkdir E:\人口数据\省级数据cd E:\人口数据\省级数据copy "https://www.hongheiku.com/tag/%E5%90%84%E7%9C%81" temp.txt, replaceinfix strL v 1-100000 using temp.txt, clearkeep if ustrregexm(v, `"</td> <td class="column-2"><a href=""')split v, p(`"</td> <td class="column-2"><a href=""')drop v v1 v2sxpose,clearrename _var1 vsplit v, p(`"</center></a></td><td class="column-3"><center>"' `"</center></td><td class="column-4"><center>"')drop vgen 省份 = ustrregexs(1) if ustrregexm(v1, `".html" title="(.*?)"><center>"')gen 常住人口 = ustrregexs(1) if ustrregexm(v2, `"(.*?)万"')gen 六普人口 = ustrregexs(1) if ustrregexm(v3, `"(.*?)万</center></td>"')drop v1-v3save E:\人口数据\省级人口数据, replace

**市级人口数据clear allcap mkdir E:\人口数据cap mkdir E:\人口数据\市级数据cd E:\人口数据\市级数据local i = 1forvalues p = 1/4 { copy "https://www.hongheiku.com/category/shijirenkou/page/`p'" temp.txt, replace infix strL v 1-100000 using temp.txt, clear keep if ustrregexm(v, `"<table id="tablepress-48" class="tablepress tablepress-id-48"') split v, p(`"</center></td></tr><tr class="row-2 even">"') drop v sxpose,clear rename _var1 v gen 地区 = ustrregexs(1) if ustrregexm(v, `".html" title="(.*?)"><center>"') gen 常住人口 = ustrregexs(1) if ustrregexm(v, `""column-3"><center>(.*?)万(人)?</center>"') gen 六普人口 = ustrregexs(1) if ustrregexm(v, `"<td class="column-4"><center>(.*?)万(人)?"') drop v save `i'.dta, replace local i = `i' + 1}clearlocal files: dir "." file "*.dta"foreach file in `files' { append using `file'}compresssave E:\人口数据\市级人口数据.dta, replace

**区县人口数据clear allcap mkdir E:\人口数据cap mkdir E:\人口数据\区县数据cd E:\人口数据\区县数据local i = 1forvalues p = 1/29 { copy "https://www.hongheiku.com/category/xianjirank/page/`p'" temp.txt, replace infix strL v 1-100000 using temp.txt, clear keep if ustrregexm(v, `"<table id="tablepress-48" class="tablepress tablepress-id-48"') split v, p(`"</center></td></tr><tr class="row-2 even">"') drop v sxpose,clear rename _var1 v gen 地区 = ustrregexs(1) if ustrregexm(v, `".html" title="(.*?)"><center>"') gen 常住人口 = ustrregexs(1) if ustrregexm(v, `"</a></td><td class="column-3"><center>(.*?)万"') gen 六普人口 = ustrregexs(1) if ustrregexm(v, `"<td class="column-4"><center>(.*?)万(人)?"') drop v save `i'.dta, replace local i = `i' + 1}clearlocal files: dir "." file "*.dta"foreach file in `files' { append using `file'}compresssave E:\人口数据\区县人口数据.dta, replace
得到的省级、市级、区县级的部分结果如下:

怎么样,是不是很简单呢?欢迎大家在评论区交流!

重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:

    最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。


对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!





往期推文推荐

       浅析Python的序列化与反序列化

     爬虫俱乐部的精彩答疑--爬虫为何失败?

       利用Stata批量制作学生证     【数据分析-入门】科学计算基本库—Numpy的简单使用      Stata绘图系列——玩转绘图通用选项之图例     【基础篇】数据类型介绍——list、tuple和range对象

覆盖北交所的“cnstock”复工了!

高考热度大数据爬虫——谁才是院校顶流

跨框架数据操作

      河南大学经济学院2022年Stata数据处理与爬虫技术开班仪式顺利召开

爬虫俱乐部的精彩答疑——local function

爬虫俱乐部精彩答疑——Python中的三种文件读取方法爬虫俱乐部的精彩答疑--认真仔细方能写出好程序
爬虫俱乐部Python精彩答疑——更换Jupyter Notebook浏览器及dropna()参数详解
       爬虫俱乐部的精彩答疑--如何打开Excel中扩展名与文件源码不符的文件

解锁《梦华录》之东京繁华生活

爬虫俱乐部的精彩答疑——DOS命令

爬虫俱乐部的精彩答疑之换行问题

爬虫俱乐部的精彩答疑--路径设置乱码怎么破?

爬虫俱乐部的精彩答疑--putdocx的二三事


关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可

以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。







您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存