如何使用RCurl获取数据?

时间:2012-09-12 00:54:25

标签: r rcurl

我想用Rcurl获取数据,当我下载网页时,我想要的数据不在文件中,我怎么能得到它,任何线索都会受到赞赏。

require(RCurl)
url="http://hk.ishares.com/product_info/fund/holdings/SEHK/2823.htm?ls=true&  l=en&periodCd=d"
data=getURL(url)
write(file="data.html",data)

您可以在网络上看到的以下数据不在data.html中,我该如何获取?

% Net Assets    Name    Exchange Ticker     Trading Exchange    SEDOL   Market Price    
(HKD equivalent)    Shares Held     Market Value  
(HKD equivalent)    Sector   
9.17    PING AN INSURANCE (GROUP) CO. OF C  601318  XSHG    B1SVWB6     50.40       81,991,646  4,132,780,718   Financials  
6.25    CHINA MERCHANTS BANK CO. LTD A  600036  XSHG    6518723     12.41     227,242,375   2,819,477,954   Financials  
4.86    SHANGHAI PUDONG DEVELOPMENT BANK C  600000  XSHG    6182043     9.15    239,651,727     2,192,915,873   Financials

2 个答案:

答案 0 :(得分:4)

你的RCurl pull基本上只是下载你连接的任何东西。因此,您的输出最终只是该页面的HTML底层。我在语言上处于劣势,在帮助你(我不会说或读中文),但从我在页面源中看到的内容看起来,大多数数据都是使用JavaScript调用的。当您执行getURL()时,您最终会获得实际JavaScript的副本,而不是数据。

您最好的解决方案是确定是否有某种类型的API可以让您提取实际数据,而不仅仅是复制HTML本身。我不确定他们是否提供。但是,另一个完全合理的选择是将数据作为电子表格。看起来有link on the page来获取包含数据的CSV文件。您可以抓住它,然后使用readlines()或类似的东西将其解析为数据。我有时会抓取CSV数据用于工作,我使用以下内容将其带入数据框:

out <- postForm("https://the.api.com/api", token="abcd", format="csv")
mydf <- read.table(textConnection(out),header=TRUE,sep=",",quote="\"")

答案 1 :(得分:2)

请注意,在该页面上,有一个指向http://hk.ishares.com/product_info/fund/excel_holdings.htm?ls=true&periodCd=d&%20%C3%82%C2%A0l=en&ticker=2823的“下载”链接。

也许您可以使用它来下载数据?

我的qmao package中有一个名为getHoldings.iShares的函数(将由getHoldings调用),可以从美国网站下载iShares ETF的持有量。

我无法在美国iShares网站上找到确切的ETF,但这将获得富时中国25指数基金的持股。也许您可以查看the code并将其修改为在中文网站上使用。

[警告: iShares.com比我跟踪的任何其他ETF网站更频繁地更改其ETF持有电子表格的格式,因此将来可能会中断。]

首先需要安装qmao package

> library(qmao)
> getHoldings("FXI")
$iShares
[1] "FXI.h"

Warning message:
In FUN("FXI"[[1L]], ...) :
  FXI has some holdings with duplicate Symbols: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> head(FXI.h)
           FXI.Weight         ISIN        Sedol     Symbol
X..             10.33 HK0941009539 6073556      941       
X...1            9.20 CNE1000002H1 B0LMTQ3      939       
X99B1G1QD3       8.21 CNE1000003G1 B1G1QD8      1398      
X...2            7.00 HK0883013259 B00G0S5      883       
X...3            5.96 CNE1000001Z5 B154564      3988      
X...4            4.12 CNE100000Q43 B60LZR6      1288      
                                   Name Market.Value Market             Sector
X..                    CHINA MOBILE LTD    474724703   XHKG Telecommunications
X...1         CHINA CONSTRUCTION BANK-H    422947063   XHKG         Financials
X99B1G1QD3     IND & COMM BK OF CHINA-H    377377292   XHKG         Financials
X...2                         CNOOC LTD    321489999   XHKG          Oil & Gas
X...3               BANK OF CHINA LTD-H    273700485   XHKG         Financials
X...4      AGRICULTURAL BANK OF CHINA-H    189355603   XHKG         Financials
           Exchange.Rate Market.Price Shares.Held
X..                 7.75        11.09    42794500
X...1               7.75         0.68   619833320
X99B1G1QD3          7.75         0.59   642996995
X...2               7.75         2.02   159155000
X...3               7.75         0.38   724190000
X...4               7.75         0.39   486089000