专栏名称: 爬虫俱乐部
Stata技术控,编程技术咨询,数据讨论与分享,编程和实证培训。
目录
相关文章推荐
复旦大学附属华山医院  ·  错当痔疮了?抓住这种癌发出的身体信号① ·  7 小时前  
家有好大事  ·  2025年合肥市重点企业最新招聘 ·  昨天  
家有好大事  ·  高考作文题来了!这个话题并未入题 ·  2 天前  
51好读  ›  专栏  ›  爬虫俱乐部

再见,高考;你好,大学(二)

爬虫俱乐部  · 公众号  ·  · 2018-07-19 11:40

正文

请到「今天看啥」查看全文


/// -H "User-Agent: Mozilla/5.0 (WindowsNT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112Safari/537.36" /// -H "Accept: */*" /// -H "Referer:https://gkcx.eol.cn/soudaxue/queryschool.html?keyWord1=&schoolflag=&1=1&page=8" /// -H "Cookie: tool_ipuse=223.104.20.26;tool_ipprovince=21; tool_iparea=2" /// -H "Connection: keep-alive" /// -H "Cache-Control: max-age=0" /// --compressed

接下来,我们分两步收集国内两千多所高校的信息!

一、得到部分高校的基本信息

首先,我们用 fileread() 函数把 txt 文件读入 stata ,并且利用正则表达式将所有的空白字符(包括空格、制表符、回车符、换行符等)删掉。

clear
set obs 1
gen v = fileread("temp.txt") replace v = ustrregexra(v,"\s","")

这样我们就把整个 txt 文件里面的内容读入到一个单元格里,如下图:

我们将这一个观测值里面的内容复制到 word 中进行分析。

通过分析我们发现:在这里可以根据 对这一个单元格的内容进行拆分、转置,这样一来,每一条观测值就只包含一所高校的基本信息。同时,我们可以看到,标号 shoufei jianjie 的内容比较杂乱,所以我们删掉每所高校中的这部分信息,标号 oldname 之后的内容没有意义,我们同样将其删掉。

split v , p(`"[{"'`"},{"')
drop v v1
sxpose,clear
replace _var1 = ustrregexra(_var1,`"(shoufei.+?")schoolcode"',"")
replace _var1 = ustrregexra(_var1,`"(oldname.+)"',"")

结果如下:

再根据逗号对 _var1 进行拆分:

split _var1,p(`","')
drop _var1

结果如下:

我们可以看到,在上图中每一个变量都是“ 变量名称+具体内容 ”的样式,接下来我们对每一个变量都进行如下操作:将变量名称提取出来放入局部宏里,替换 _var* ,并将观测值中的变量名称删除,只保留具体内容。

程序如下:

foreach c of varlist _all {
       if ustrregexm(`c',`""(.+?)":"') local varname = ustrregexs(1)
       cap rename `c' `varname'
       cap replace `varname' = ustrregexs(1) if ustrregexm(`varname',`"":"(.+)""')
}
drop _var*

将我们希望看到的变量排在前边,再将数据按照全国热度排序,这时我们就得到了我们想要的数据。

order schoolid ranking
destring(ranking),replace
sort ranking
save temp.dta,replace

结果如下:







请到「今天看啥」查看全文