Stata小程序: 提取簡書文章列表

作者:連玉君 (知乎 | 簡書 | 碼雲 | github)


Stata 寒假班 報名中……

連玉君主講,2018年1月13日-21日,北京

Stata初級班|Stata高級班 | Stata全程班

問題背景:

  • 在每一篇簡書推文的末尾,我都會加上【往期回顧】欄目,如【圖1】。
  • 這些超鏈接文字對應的 Markdown 語句挺繁瑣,見【圖2】。
  • 我以前笨,手動操作,需要從我的簡書主頁 (圖3) 中逐個【複製】→ 【粘貼】4 次才能完成一個鏈接。

解決辦法:用 Stata 寫個小程序!

思路:

  1. copy 命令從我的【簡書主頁】讀取 網頁數據,存儲到一個文本文件中;
  2. infix 命令將上述文本文件讀取為 Stata 格式的數據;
  3. 使用 subinstr() 等字元函數或正則表達式處理網頁中的無用信息,進而將處理好的乾淨文本改寫為 Markdown 格式的鏈接;
  4. export delimited 命令把處理好的數據讀入文本文件,進而用 shellout 命令打開這個文本文件;
  5. 從文本文件中複製自動生成的鏈接文字,貼入簡書 Markdown 編輯器。

使用方法:

  1. 把上述代碼寫成 Stata 程序,即 .ado 格式的程序文件,命名為 jslist.ado
  2. 每次使用時,在 Stata 命令窗口中輸入 jslist 即可自動生成【圖2】中的 Markdown 文本。參見【圖4】和【圖5】。

圖1:簡書文中【往期回顧】輸出效果

圖2:簡書文中【往期回顧】的 Markdown 原文

圖3:我的簡書主頁

*! 呈現連玉君的簡書文章列表 Markdown 格式n*! 2017/6/18 12:29n*! 後續工作:把這個 txt 文檔的內容直接寫入 搜狗 短語文件中,n*! 鍵盤輸入時,只需輸入 jslist 即可插入最新列表nnprogram define jslistnversion 15nn *-從簡書個人主頁copy個人文章列表nn cd "D:stata15adopersonalJianshujianshuList"nn*----------------------quietly------------bein--- nqui{ n copy "http://www.jianshu.com/u/69a30474ef33" "jianshu_list.txt", replace nn *-將網頁 txt 文檔讀入 stata n local ff "jianshu_list"n infix strL var 1-3000 using "`ff.txt", clearnn *-去除無用 codes, 保留所需代碼 n format var %-600s n keep if strmatch(var, `"*<a class="title" target="_blank" href="/p/*")n replace var=subinstr(var,"/p/","http://www.jianshu.com/p/",.)n replace var=subinstr(var,`"href="","<",1)n replace var=subinstr(var,`"">","<",1)nn *-將處理後的文本轉換成 Markdown 鏈接語句 n split var, parse(<)n keep var3 var4n rename (var3 var4) (url title)n order title urln replace title = "- [" + titlen replace title = title + "]"n replace url = subinstr(url,"http","(http",.)n replace url = url+")"n gen v = title+urln format v %-300s n keep vnn *-輸出處理好的 txt 文本,並直接打開 txt 文檔n export delimited using "`ff_out.txt", novar nolabel replacenn shellout "`ff_out.txt"n} n*----------------------quietly------------over--- nnendn

jslist.ado 文檔

圖4:在Stata命令窗口輸入 jslist 命令

圖5:輸出效果

可以進一步擴展的地方

  1. jslist.ado 輸出的 txt 文檔內容直接寫入 (help file write) 搜狗 短語文件中;當使用搜狗輸入法時,只需輸入 jslist 即可插入最新列表;
  2. 添加一個選項 url(string),可以讓用戶自己指定需要訪問的簡書主頁;
  3. 目前的程序還無法獲取完整的簡述文章列表,還需要分析網頁;

往期回顧

  • 在 Markdown 中使用 HTML 中的特殊符號
  • 新數據,新視角!獲取特殊數據的軟體
  • Stata幫助和網路資源匯總(持續更新中)
  • 協整:醉漢牽著一條狗
  • 在 Markdown 中快速插入文字連接
  • Stata dofile 轉換 PDF 製作講義方法
  • Github使用方法及Stata資源
  • 碼云:我把常用小軟體都放這兒了
  • 連玉君的鏈接

Stata 寒假班 報名中……

連玉君主講,2018年1月13日-21日,北京

Stata初級班?|?Stata高級班? | ?Stata全程班


weixin.qq.com/r/7Ujm-tf (二維碼自動識別)

推薦閱讀:

Stata dofile 轉換 PDF 製作講義方法
教師利器:ZoomIt 4.5 屏幕縮放小軟體
應用stata過程中,遇到過哪些特別棘手但最終得以解決的問題?
零基礎如何入門stata?

TAG:Stata | stata学习 | stata连享会 |