本文作者:周聪聪
文字编辑:张 宇
技术总编:刘洪儒
好消息!!!爬虫俱乐部将于2018年11月30日至2018年12月2日在武汉举行Stata编程技术培训。本次培训主要面向财务、会计和金融专业高校教师、硕博生,全部课程均是采用财务金融领域的案例,旨在帮助财务金融领域的研究者熟悉Stata数据分析技巧,能够通过编程读取不同类型的数据源、实现复杂数据合并、清洗的程序化,通过简单的程序构造复杂的财务金融指标。详细培训大纲及报名方式,请点击文末阅读原文呦~
爬虫俱乐部是您身边的科研助手,能够为您在数据处理、实证研究中提供帮助。承蒙30000+粉丝的支持与厚爱,我们在腾讯课堂推出了网络视频课程,专注于数据整理、网络爬虫、循环命令编制和结果输出…李老师及团队精彩地讲解,深入浅出,注重案例与实战,让您更加快速高效地掌握Stata技巧及数据处理的精髓,而且可以无限次重复观看,百分百好评,简单易学,一个月让您从入门到精通。绝对物超所值!观看学习网址:https://ke.qq.com/course/286526?tuin=1b60b462,敬请关注!
有问题,不要怕!访问 http://www.wuhanstring.com/uploads/5_aboutus/爬虫俱乐部-用户问题登记表.docx (复制到浏览器中)下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~
爬虫俱乐部的github主站正式上线了!我们的网站地址是:https://stata-club.github.io,粉丝们可以通过该网站访问过去的推文哟~
好消息:爬虫俱乐部隆重推出数据定制及处理业务啦,您有任何网页数据获取及处理方面的难题,请发邮件至我们邮箱statatraining@163.com,届时会有俱乐部高级会员为您排忧解难!
在往期推文《玩转stata15-putdocx生成word文档》中,我们详细介绍了如何使用putdocx命令生成word文档并录入文本内容。虽然putdocx命令有诸多闪光点,但使用时有固定的格式要求,需要使用诸多选项来一一调整段落的对齐方式、文本的字体字号等文档格式,十分繁琐。相比之下,Markdown 是一种纯文本轻量级(简洁明了)标记语言,利用不同CSS文件对Markdown文档做渲染,即可快速转换页面风格,产生多样的HTML文档。
因此,今天小编就主要给大家介绍如何快速改变Markdown文档的输出样式。相关程序文件已上传至https://github.com/Stata-Club/Sharing-Center-of-Stata-Club/tree/master/article/putdocx,大家可以自行下载查看。下面,小编带领大家一起来看这段神奇的代码:
clear all //清空内存
cd E:\putdocx/ //设置缺省路径
我们看到,E盘的"putdocx"文件夹中有以下文件:

现在,我们想得到后缀名为".css"的文件,程序如下:
fs *.css //使用fs命令查看当前路径下的所有CSS文件

disp `"`r(files)'"' //fs命令列出文件名时会自动将其存于返回值`r(files)'中,使用display命令列出fs命令返回值中的内容

接下来就是我们的重头戏——循环了,在此之前,首先为大家展示一下我们需要用到的"p18.do"文档及"header.txt"文档的具体内容:

p18.do

header.txt
我们想对同一份文件使用不同的CSS渲染,考虑如下的循环思路:
第一步,对不同的CSS文件做循环,依次为"markdown1.css"、"markdown2.css"、"markdown3.css"、"screen.css"、"swiss.css"。
第二步,"header.txt"中"href="./的后面为引用的CSS文件,每次循环时,我们用第一步中列出的不同CSS文件替换"header.txt"里面引用的CSS文件,如第一次循环时将引用的CSS文件替换为"markdown1.css"。
第三步,"p18.do"文档采用了markdown标记语言,该文档中的<<dd_include:header.txt>>会将包含了引用CSS文件的"header.txt"文档写入HTML文档。如果我们将"p18.do"文档转换为HTML,那么包含了引用CSS文件的"header.txt"也会通过do文档被写到HTML中。这样,最后输出的HTML文档就包含了引用CSS文件的语句及"p18.do"文档中的内容,如下图所示:

P18.html
第四步:使用不同的CSS对"p18.do"进行渲染,输出不同样式的HTML文档。
理清循环思路后,我们来写一下这个循环:
foreach cssname in `r(files)' {
disp "`cssname'"
subinfile header.txt,from(`"href="./.*?\.css"') to(`"href="./`cssname'"') ///
fromregex save(header.txt) replace
dyndoc p18.do,replace
shellout p18.html
sleep 10000
!taskkill /F /IM chrome.exe /T
}
下面,小编结合循环命令为大家解释一下具体操作。首先,我们使用subinfile命令替换"header.txt"里面引用的CSS文件。以第一次循环为例,我们使用"markdown1.css"对"p18.do"进行渲染,输出对应格式的HTML文档。有一点需要大家注意,在使用subinfile命令对CSS文件替换之后,我们将替换后的文件保存到了"header.txt"中。此时,"p18.do"文档本身并没有被修改。
然后,我们使用dyndoc命令将"p18.do"文档转换为HTML文档(dyndoc命令可以将动态的markdown文档转换为HTML文档)。转换后生成的HTML文档包含了引用CSS文件的语句及"p18.do"文档中的内容。在循环时,dyndoc仅需更换引用的CSS文件就可以变更转换效果,非常高效便捷。
最后,我们使用shellout命令打开"p18.html"。
这样,我们就可以看到对同一份文件使用不同的CSS渲染后,在浏览器中显示出的文本效果啦。





其中do文档的内容可根据需要进行替换,输出对应的html文档。感兴趣的读者不妨自己动手试一试!
对爬虫俱乐部的推文累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫!
往期推文推荐
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


