0

我想用 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
4

2 回答 2

4

您的 RCurl 拉取基本上只是下载您连接到它的任何内容。因此,您的输出最终只是该页面底层的 HTML。我在帮助你方面处于语言劣势(我不会说或读中文),但从我在页面源代码中看到的情况来看,看起来大多数数据都是使用 JavaScript 调用的。当您执行getURL().

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

out <- postForm("https://the.api.com/api", token="abcd", format="csv")
mydf <- read.table(textConnection(out),header=TRUE,sep=",",quote="\"")
于 2012-09-25T17:01:37.700 回答
2

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

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

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

我在美国 iShares 网站上找不到确切的 ETF,但这将获得富时中国 25 指数基金的持有量。也许您可以查看代码并对其进行修改以在中文站点上使用。

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

您首先需要安装qmao软件包

> 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
于 2012-09-25T17:26:11.520 回答