中秋快乐
最近呢,有一些童鞋在看了推文一起来揪出网页真实链接!之后发现,这次在和讯网抓取的网页源代码与之前常见的源代码有所不同。那么,针对这样的源代码,应该怎么处理呐?怎样把数据整理成如下所示与和讯网网页表格显示的形式呢?
回顾抓取网页源代码的命令
首先,让我们回顾一下在一起来揪出网页真实链接!提到的抓取网页源代码的命令:
clear
cap mkdir E:/爬虫
cd E:/爬虫
copy "http://hkquote.stock.hexun.com/hqzx/restHKStockQuote_new.ashx? type=100&sorttype=0&updown=down&page=1&count=50&input=2&time=171700" temp1.txt, replace
shellout temp1.txt // shellout是外部命令,需要提前安装哦
网页源代码如下图所示:
读入源代码
转码
unicode encoding set gb18030
unicode translate temp1.txt,transutf8
unicode erasebackups,badidea
用fileread( )函数读入源代码
set obs 1
gen v = fileread("temp1.txt")
注意:源代码只有一行情况下可以直接用fileread()函数读入
di v
发现开头与结尾有我们不需要的信息:
删除开头与结尾无用信息
在此,我们选用了正则表达式来进行快捷地处理:
replace v = ustrregexra(v, "(.*\[\[)|(\]\].*)", "")
Tips:
“.*\[\[”:匹配开头的无用信息“dataArr = [[”。其中“.”可以匹除换行符和回车符外的任意单个字符,“*”代表前一个字符或子表达式任意次(0次或多次),“\”表示对元字符进行转义,正则表达式元字符是具有特殊含义的字符,当用元字符匹配文本时,如果要表示“元字符本身”,而不是其代表的特殊含义,就需要对元字符进行转义。
“\]\].*”:匹配结尾的无用信息“]];HKStockListPage.GetData(dataArr,42,"2017-09-28 11:02.32",2);”。“|”表示逻辑“或”的操作符。然后将匹配到的信息替换为空即可。
di v
得到下面的结果:
分开列表,转置成变量(行变列)
现在数据都在一行,怎么将其分开那?上命令:
split v,p(],[)
从图中可以发现变量v是我们不需要的,去掉即可;然后将剩余变量转置(行变列):
drop v
sxpose,clear // sxpose是外部命令,需要安装
当当当,结果来了:
拆分变量
现在,我们将每行的数据按照一定分割符分开,并删除无用变量:
split _var1,p(,)
drop _var1
清洗数据
最后,我们开始清洗数据:
replace _var11 = ustrregexra(_var11, "'", "")
replace _var12 = ustrregexra(_var12, "'", "")
replace _var12 = ustrregexra(_var12, `"\\""', "'")
上述第一、二行命令分别将_var11、_var12里的单引号替换为空,然而你看懂第三行的命令了嘛~~~~火眼金睛-----看这里:
我们发现整理出来的公司名称中有一个“\"”,为了避免这种情况,我们批量进行修改(即执行上述命令),防止其他公司名称出现这种情况,避免单个修改浪费时间。结果如图:
接着修改变量名,将字符型数据转换为数值型数据:
rename (_*) (代码 名称 最新价 开盘价 前收盘 涨跌幅 成交量 最高价 最低价)
destring _all, replace
结果如下图,看惯股票代码形式的童鞋们可能要犯强迫症了!!!股票代码为什么要转成数值型呢?原因就是当你用面板数据做研究时,股票代码作为面板变量的话,需要其是数值型哦~
在这里,小编教你一招,就可以解救你的强迫症啦*_*
format %05.0f 代码 //数值型变量前补0
compress
到这里,我们的问题就解决啦~
怎么样,你觉得还OK吗?
——我觉得很一般啦~哈哈哈……
对于上面的问题,你有没有更简单,好玩的程序呢?赶快给我们留言吧!!
看不懂的记得戳下方视频哦~
注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同纯属巧合!
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!
应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~
文字编辑:高金凤
技术总编:刘贝贝
往期推文推荐:
5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件
6.putdocx+wordconvert—将实证结果输出到Word(.docx)文档
7.Stata 15之Markdown——没有做不到,只有想不到!
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。
欢迎关注爬虫俱乐部
微信扫一扫
关注该公众号