Stata

重磅新命令:songbl—利用搜索自己收藏的stata帖子

2021-01-01  本文已影响0人  松柏林stata

前言

互联网上stata资源非常丰富,包括许多大牛写的stata技术博客,以及众多“好事者”热心回复的帖子,例如连享会爬虫俱乐部,以及经管之家stata板块等等。我们收藏了数以千计的stata文章与跟帖资源,等我们遇到问题浏览帖子的时候,需要根据问题利用关键字搜索收藏的stata文章。

收藏文章放置

我收藏的stata文章 放在简书上,简书文章可以不断地编辑,有助于随时更新收藏到新的stata文章。文章收藏固定为:网址与标题,这样有利于之后抓取与分析。

收藏文章方式

1.手工收集
手工收集的优点是可以挑选优质且适合自己的文章,文章标题可以更改为与文章内容更加相一致,以方便之后关键词精准搜索。缺点不言而喻,手工收集不利于大规模操作。
2.爬虫收集
优点自然是速度快,规模大,但是文章质量可能参差不齐。适合抓取一些优质博主的文章,例如连享会

命令程序

capture program drop songbl
program define songbl
version 10.0
args arg1 arg2 arg3 arg4 arg5
  preserve
  qui{
  cap copy "https://www.jianshu.com/p/5dd37c991717"  temp.txt, replace  //抓取文章放置地方的网页源代码
  infix strL v 1-100000 using temp.txt, clear      //导入网页源代码  
  keep if index(v,"http")
  drop in -1
  drop in 1
  gen a=strmatch(v,"*jianshu*" )       //来自简书的文章
  gen b=strmatch(v,"*weixin*" )       //来自微信公众号的文章
  gen c=strmatch(v,"*lianxh*" )      //来自连享会的文章
  gen d=strmatch(v,"*sina*" )       //来自新浪博客的文章
  gen e=strmatch(v,"*ershicimi*" ) //来自次幂数据的文章
  gen f=strmatch(v,"*zhihu*" )    //来自知乎的文章
  gen g=strmatch(v,"*pinggu*")   //来自经管之家的文章
  replace a=2 if b==1
  replace a=3 if c==1
  replace a=4 if d==1
  replace a=5 if e==1
  replace a=6 if f==1
  replace a=7 if g==1
  gen 网址=substr(v,1,38) if a==1      //文章链接
  gen 标题=substr(v,39,.) if a==1     //文章标题   
  replace 网址=substr(v,1,49) if a==2
  replace 标题=substr(v,50,.) if a==2
  replace 网址=substr(v,1,45) if a==3
  replace 标题=substr(v,46,.) if a==3
  replace 网址=substr(v,1,52) if a==4
  replace 标题=substr(v,53,.) if a==4
  replace 网址=substr(v,1,60) if a==5
  replace 标题=substr(v,61,.) if a==5
  replace 网址=substr(v,1,38) if a==6
  replace 标题=substr(v,39,.) if a==6
  split  v, p("+")       //由于经管之家不同板块帖子链接不固定,需要事先利用"+"把文章网址与标题隔开
  replace 网址 =v1   if a==7
  replace 标题 =v2   if a==7
  gen 标题1 = lower(标题)   //标题字母改为小写,后面搜索只支持小写字母
  gen yjy1=strmatch(标题1,"*`arg1'*") 
  gen yjy2=strmatch(标题1,"*`arg2'*") 
  gen yjy3=strmatch(标题1,"*`arg3'*") 
  gen yjy4=strmatch(标题1,"*`arg4'*") 
  gen yjy5=strmatch(标题1,"*`arg5'*") 
  }

  if "`arg1'"=="" {    
  local n=_N
  dis `"{browse "https://www.jianshu.com/p/5dd37c991717": 数据库}一共收集了`n'篇文章 
  }

  else if "`arg1'"!="" & "`arg2'"=="" {
  qui keep if yjy1==1 
    if _N==0{
      dis as error `"没有搜到{`arg1'}相关的内容,请重新输入"' 
      dis  ""
      dis as error `"请注意:不支持大写关键词的推文超链接搜索"' 
      exit 
    }
  local n=_N
  dis " 共搜到`n'篇文章-->> "
    else{
      local j =_N
      forval i = 1/`j' {         
        local q=网址[`i']
        local w=标题[`i']
        dis  `"{browse "`q'": `w'}"'
      }
    }
  }

  else if "`arg1'"!="" & "`arg2'"!="" & "`arg3'"=="" {
  qui keep if yjy1==1 & yjy2==1 
    if _N==0{
      dis as error `"没有搜到{`arg1' `arg2'}相关的内容,请重新输入"' 
      dis  ""
      dis as error `"请注意:不支持大写关键词的推文超链接搜索"' 
      exit 
    }
  local n=_N
  dis " 共搜到`n'篇文章-->> "
    else{
      local j =_N
      forval i = 1/`j' {         
        local q=网址[`i']
        local w=标题[`i']
        dis  `"{browse "`q'": `w'}"'
      }
    }
  }

  else if "`arg1'"!="" & "`arg2'"!="" & "`arg3'"!="" & "`arg4'"==""{
  qui keep if yjy1==1 & yjy2==1 & yjy3==1 
    if _N==0{
      dis as error `"没有搜到{`arg1' `arg2' `arg3'}相关的内容,请重新输入"' 
      dis  ""
      dis as error `"请注意:不支持大写关键词的推文超链接搜索"' 
      exit 
    }
  local n=_N
  dis " 共搜到`n'篇文章-->> "
    else{
      local j =_N
      forval i = 1/`j' {         
        local q=网址[`i']
        local w=标题[`i']
        dis  `"{browse "`q'": `w'}"'
    }
    } 
  }

  else if "`arg1'"!="" & "`arg2'"!="" & "`arg3'"!="" & "`arg4'"!="" & "`arg5'"=="" {     
  qui keep if yjy1==1 & yjy2==1 & yjy3==1 & yjy4==1
    if _N==0{
      dis as error `"没有搜到{`arg1' `arg2' `arg3' `arg4'}相关的内容,请重新输入"' 
      dis  ""
      dis as error `"请注意:不支持大写关键词的推文超链接搜索"' 
      exit 
    }
  local n=_N
  dis " 共搜到`n'篇文章-->> "
    else{
      local j =_N
      forval i = 1/`j' {         
        local q=网址[`i']
        local w=标题[`i']
        dis  `"{browse "`q'": `w'}"'
      }
    }
  }

  else {     
    dis as error `"最多仅支持4个关键词搜索"' 
    exit 
  }
  
  restore
  erase temp.txt
 end

如何搜索文章

songbl merge
songbl append
songbl 省级面板数据
songbl 双重差分
songbl didi 倍分法
stata运行结果
上一篇 下一篇

猜你喜欢

热点阅读