正文
///
-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
结果如下: