如何使用SAS的PROC HTTP

时间:2018-04-19 04:59:23

标签: http dom get sas proc

我正在尝试使用PROC HTTP来获取某些内容的不断变化的值(例如,此网络中BitCoin的价格:https://www.coindesk.com/price/

如果我们使用F12打开检查器并查找大价格的标签元素,我们可以找到:

<div id="cdbpidata">
  <span class="wpsr_floatbts_anchor" data-offset="31" style="float: left;"></span>
  <div class="latest">
    <span class="data"><span class="symbol">$</span>8,165.12</span>
    <span class="percent data-up">0.02%</span>
  </div>
   .
   .
   .
</div>

我希望得到'8,165.12'并将其放在DataSet上。然后我用了这个:

proc http
   url='https://www.coindesk.com/price/'
   method='GET'
   out=resp;
run;

它有效!但还不够好。我在我的xml中收到了这个:

<div id="cdbpidata">
  <span class="wpsr_floatbts_anchor" data-offset="31" style="float: left;"></span>
  <div class="latest">
     <span class="data">–</span>
     <span class="percent"></span>
  </div>
  .
  .
  .
</div>

对我来说没什么大不了的,太糟糕了。显然这是因为价格是用DOM函数打印在DOM中的,但我不知道如何获得它! 救命啊!

1 个答案:

答案 0 :(得分:3)

如果您在开发人员工具网络选项卡中再挖一点,您会看到该页面从coindesk api发出了json数据请求。您可以执行相同的查询,而不需要刮取html页面。

您应该在点击api之前查看coindesk政策。您可能需要获取用户密钥,或者可能存在限制数据提取的其他术语。

filename outjson 'c:\temp\prices.json';

proc http
   url='https://api.coindesk.com/v1/bpi/currentprice/allcurrencies.json?showex=1&calc=1'
   method='GET'
   out=outjson
;
run;

SAS有一个json库引擎,其工作方式类似于xml库引擎。

libname price json 'c:\temp\prices.json';

data price_usd;
  set price.bpi_usd;
run;

proc print data=price_usd;
run;

enter image description here