http - 如何使用 SAS 的 PROC HTTP 获取 HTML 动态创建的值

标签 http dom get sas proc

我正在尝试使用 PROC HTTP 来获取某些东西的不断变化的值(value)(例如,此网站中比特币的价格: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”并将其放入数据集。然后我用了这个:

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>

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

最佳答案

如果您深入了解开发人员工具网络选项卡,您会看到该页面从 coindesk api 发出了 json 数据请求。您可以执行相同的查询而无需抓取 html 页面。

您应该在访问 api 之前查看 coindesk 政策。您可能需要获取用户 key ,或者可能存在其他限制数据提取的条款。

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

关于http - 如何使用 SAS 的 PROC HTTP 获取 HTML 动态创建的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49913027/

相关文章:

javascript - 典型的 HTTP session ,但采用 Ajax 风格

http - Chrome 不加载页面,safari 可以

javascript - 自定义Wordpress插件: Cannot read property 'parentElement' of null

javascript - 跨源请求被阻止 : (Reason: CORS header 'Access-Control-Allow-Origin' missing)

php - 尝试使用 curl 执行 GET,发送的值允许为 null

java - ReSTLet:GET 请求使用访问多个资源的查询

http - JAX-WS:在代码中而不是在外部 xml 中定义服务器端处理程序链

Ruby 分块编码客户端

javascript - 将 Javascript 对象转换为 dom 元素

java - 从 xml 获取正确元素时遇到问题