【问题标题】:How to get the data with RCurl?如何使用 RCurl 获取数据?
【发布时间】:2012-09-12 00:54:24
【问题描述】:

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

【问题讨论】:

    标签: r rcurl


    【解决方案1】:

    您的 RCurl 拉取基本上只是下载您连接到它的任何内容。因此,您的输出最终只是该页面底层的 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="\"")
    

    【讨论】:

      【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-26
        • 2020-12-24
        • 2013-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多