SAS网络抓取

时间:2015-02-04 06:46:44

标签: web-scraping sas

我想从[HKAB]网站[1]获得最新的香港银行同业拆息率。

以下是我尝试过的代码:虽然它在filename语句中给出了错误

data parm;
    format yyyymmdd $8.;

    yyyymmdd = put(date(), yymmddn8.);

    yyyy = put(substr(yyyymmdd, 1, 4), $4.);
    mm = put(substr(yyyymmdd, 5, 2), $2.);
    dd = put(substr(yyyymmdd, 7, 2), $2.);
    *url = 'http://www.hkab.org.hk/hibor/listRates.do?lang=en&Submit=Search&year='||yyyy||'&month='||mm||'&day='||dd;;
    format url $1024.;
    url = 'http://www.hkab.org.hk/hibor/listRates.do?lang=en&Submit=Search&year=' || yyyy || '&month=' || mm || '&day=' || dd;
    url2 = 'curl ' || url;
    call symput('url',url);
    call symput('url',url);
    call symput('url',url);
    call symput('url',url);
    call symput('url2',url2);

    put _all_;
run;

%put &url2.;
filename hiborpage url &url.;


  [1]: http://www.hkab.org.hk/hibor/listRates.do?lang=en&Submit=Search&year=2015&month=1&day=26

1 个答案:

答案 0 :(得分:2)

您的fileref超过8个字符。将hiborpage更改为更短的内容,例如hibor。另外,正如Reeza所提到的,将&url放在双引号中。宏变量不会用单引号解析。这应该可以解决错误。

网址中还有&符号。通常,您只需将这样的字符串放在单引号中,但由于它在宏变量中,您需要双引号。问题是SAS尝试解析它认为是URL中的宏变量,并在失败时给出警告。要避免这些警告,请使用宏函数%nrstr()来屏蔽宏变量中的&符号,例如:

%let url3 = %nrstr(&url);
filename hibor url "&url3.";