大数跨境
0
0

探索源远流长的家族历史——爬取祠堂数据

探索源远流长的家族历史——爬取祠堂数据 Stata and Python数据分析
2024-08-16
2
导读:Fortune knocks once at least at every man’s door.

本文作者:刘恒新,河南大学经济学院

本文编辑:马梦杰

技术总编:李婷婷

Stata and Python 数据分析

爬虫俱乐部Stata基础课程Stata进阶课程Python课程可在小鹅通平台查看,欢迎大家多多支持订阅!如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~

 



1.导读

宗祠不仅是家族精神的汇聚之地,‌更是传承文化、‌团结亲情的象征。‌它们作为家族的象征,‌在中国的历史文化长河中扮演着至关重要的角色。‌我们在了解宗祠文化时发现了一个关于祠堂文化的网站(www.100citang.cn/zongciweb/citang),今天就带大家探索如何使用Stata爬取全国各地宗祠的数据。这一过程不仅涉及技术的精细操作,更是一场文化的深度挖掘。


2.数据获取的准备工作

首先确定本文的数据来源,我们首先找到宗祠网官网:“www.100citang.cn/zongciweb/citang” 找到如下图所示的页面:我们想要获取的数据是:宗祠名称、宗祠所在地、所处省份、所处城市一共四部分信息。




3.获取源代码

我们查看网页源代码,鼠标右键后点击“查看页面源代码”,源代码如下图所示:

在源代码中观察到我们所需的信息后,我们开始对数据进行处理,首先抓取网页信息,代码如下所示:
*单个网页抓取clearcap mkdir "D:\stata"cd "D:\stata"copy "http://www.100citang.cn/zongciweb/citang" temp.txt, replaceinfix strL v 1-100000 using temp.txt, clear
我们得到的结果如下图所示:



4.数据处理

在对源代码进行观察后,我们使用以下代码对数据进行初步处理,保留所需信息:

*对数据进行初步处理keep if index(v, "class=") //保留含有"</div></td>"标签的行drop if index(v, "</li>")  drop if index(v, "<div")  drop in 1/10drop in -12/-1*删去无用符号replace v = subinstr(v, "</p>", "", .)replace v = subinstr(v, "</h5>", "", .)replace v = subinstr(v, `"<h5 class="name">"', "", .)replace v = subinstr(v, `"<p class="address">"', "", .)*分组得到想要的数据replace v = v + "*****" + v[_n + 1] + "*****" + v[_n + 2] + "*****" + v[_n + 3] if mod(_n, 4) == 1split v, p("*****")keep if mod(_n, 4) == 1drop vdrop v1drop v4rename v2 宗祠名称rename v3 地点
我们运行上述代码后得到如图(4)所示的面板数据,我们初步得到宗祠名称和宗祠所在地。



5.划分省市区

为了获取更为详细的省市区数据,接下来我们使用正则表达式对宗祠所在地进行具体划分。
*省份数据获取gen 省份=ustrregexs(0) if ustrregexm(地点, ".*省+")  //提取省份replace 省份=ustrregexs(0) if ustrregexm(地点, ".*?自治区+") //自治区replace 省份=ustrregexs(0) if ustrregexm(地点,".*?市+") & 省份=="" //直辖市replace 省份=地点 if 省份==""*城市数据获取gen city=ustrregexs(0)  if ustrregexm(地点, "省.*?自治州+")  //提取省辖自治州replace city=ustrregexra(city,"[省]","")gen city1=ustrregexs(0)  if ustrregexm(地点, "省.*?市+")  //省辖地市replace city1=ustrregexra(city1,"[省]","")replace city=city1 if city==""drop city1gen city1=ustrregexs(0)  if ustrregexm(地点, "自治区.*?地区+") //提取自治区辖地区replace city1=usubstr(city1, 4, strlen(city1)) //删掉"自治区"replace city=city1 if city==""drop city1gen city1=ustrregexs(0) if ustrregexm(地点, "自治区.*?自治州+") //自治区辖自治州replace city1=usubstr(city1, 4, strlen(city1)) //删掉"自治区"replace city=city1 if city==""drop city1gen city1=ustrregexs(0) if ustrregexm(地点, "自治区.*?市+")  //自治区辖地市replace city1=usubstr(city1, 4, strlen(city1))  //删掉"自治区"replace city=city1 if city==""drop city1gen city1=ustrregexs(0) if ustrregexm(地点, ".*?市+") //再提取直辖市replace city=city1 if city==""drop city1*县区数据获取gen cnty=ustrregexs(0) if ustrregexm(地点, "\市.*")    //保留县及以下地址gen cnty1=ustrregexs(0) if ustrregexm(地点, "\自治州.*") gen cnty2=ustrregexs(0) if ustrregexm(地点, "\地区.*")gen cnty3=usubstr(cnty, 2, strlen(cnty))replace cnty3=usubstr(cnty1, 4, strlen(cnty1)) if cnty3==""replace cnty3=usubstr(cnty2, 3, strlen(cnty2)) if cnty3==""drop cnty cnty1 cnty2gen cnty=ustrregexs(0) if ustrregexm(cnty3, ".*?县+")  //提取县replace cnty=ustrregexs(0) if ustrregexm(cnty3, ".*?市+") & cnty=="" //提取县级市replace cnty=ustrregexs(0) if ustrregexm(cnty3, ".*?区+") & cnty=="" //提取市辖区replace cnty=city if cnty==""    //将city中的县级市替换到cntydrop cnty3gen cnty1=ustrregexs(0) if ustrregexm(地点,"省.*?县+") //无市地址,只有省县replace cnty1=usubstr(cnty1, 2, strlen(cnty1)) //删掉"省"replace cnty=cnty1 if cnty==""drop cnty1
最终我们得到了想要的结果,如下图所示,我们得到宗祠名称和它们所在的地区、省、市、区县。



6.汇总各地区宗祠数量

我们接下来想要得到各省份和城市的宗祠数量,输入代码如下所示:
*统计各城市宗祠数量bys city: gen n=_ndrop in 1/17bys city: egen 各市宗祠数量=max(n)drop n*统计各省份宗祠数量bys prov: gen n=_nbys prov: egen 各省宗祠数量=max(n)drop nsave 宗祠.dta,replace
最终我们得到了想要的结果,如下图所示,我们得到各个省份和城市的宗祠数量汇总。

通过以上程序,我们就成功从宗祠网爬取各地宗祠数据,不仅能帮助大家更好地了解家族历史,还有助于推广和传承中国丰富的传统文化。在这一过程中,我们始终坚持科技与文化的和谐共生,确保每一步操作都充满敬意和责任感,使更多的人能够了解并传承自己的家族文化。将这些宝贵的文化遗产介绍给公众,提升社会对传统文化的认识和尊重。下一期,我们将深入探讨其它Stata提供的有趣和有用的命令。敬请期待!


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


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


往期推文推荐





【Python实战】基于大数据的贷款违约分析

【爬虫实战】 A股上市公司基本面类数据分析——基于TuShare中的财务指标数据
Python爬虫实战:从抓取年报并分析数据开始

【数据分析基础】Python数据交叉表

使用usesome命令来精确控制你的数据导入
Python爬虫——获取NASA卫星数据
基于情感词典的文本情感分析——以携程网景点评论为例
fre命令——展示变量的频率分布
Chatgpt|GPT在文本分析中的应用:一个基于Stata的集成命令用法介绍
数量经济技术经济研究|GPT在文本分析中的应用:一个基于Stata的集成命令用法介绍
变量的不同观测值个数统计——distinct和vardistinct
品诗雅谈的“诗词大会”——putdocx指令的使用
Stata答疑——专利个数知多少

Stata压缩和解压缩文件的几种方法

【python库——whisper】实现音频转换成文字功能

用Python进行乳腺癌预测的简单机器学习

足不出户的“世界之旅”

【爬虫实战】python文本分析库——Gensim

Python可视化-绘制三维空间空间图形

     关于我们 

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

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



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

投稿邮箱:statatraining@163.com投稿要求:1)必须原创,禁止抄袭;2)必须准确,详细,有例子,有截图;注意事项:1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。




【声明】内容源于网络
0
0
Stata and Python数据分析
爬虫俱乐部,新的启航
内容 1337
粉丝 0
Stata and Python数据分析 爬虫俱乐部,新的启航
总阅读244
粉丝0
内容1.3k