2013-03-19 249 views
3

當我導航到此頁面(http://hk.ishares.com/product_info/fund/overview/SEHK/2836.htm)並單擊「NAV/Index History」鏈接(位於「Market Information」下)下載CSV文件時,該文件的內容爲用英語。但是,如果我嘗試做同樣的通過使用以下命令R,內容是在中國:從多語言網站下載文件

download.file("http://hk.ishares.com/product_info/fund/excel_histoverview.htm?ticker=2836", destfile="2836.csv") 
a <- read.csv("2836.csv", skip = 5) 
> head(a) 
      日期 指數收市水平..HKD. 單位資產淨值 總派息.每股...HKD. 
1 2013年03月18日   3666.9390  15.7774     0 
2 2013年03月15日   3701.3143  15.9145     0 
3 2013年03月14日   3709.7446  15.9484     0 
4 2013年03月13日   3668.3178  15.8762     0 
5 2013年03月12日   3707.0364  15.9726     0 
6 2013年03月11日   3716.4011  16.0521     0 

據推測這是因爲該網站是認識到我的瀏覽器中的cookie,並提供我的文件的英文版,但不是當我經歷了R.

有沒有辦法解決這個問題?這導致我將CSV文件轉換爲XTS時遇到一些困難,因爲我不知道如何將中文日期轉換爲日期對象。

謝謝。

+1

您是否嘗試過'gsub(「[^ [:digit:]]」,「 - 」,a [,1])'作爲快速修復? – 2013-03-19 10:47:38

+0

可能該網站正在使用基於客戶端發送的「Accept-Language」頭的內容協商? – CBroe 2013-03-19 11:01:44

+0

@ sebastian-c這幾乎工作。我得到一個額外的連字符''2009-02-10-'' – mchangun 2013-03-19 11:06:29

回答

4

假設你已經安裝了HTTR庫,試試這個:

library(httr) 

# Get cookies from English page 
en_page <- GET("http://hk.ishares.com/product_info/fund/overview/SEHK/2836.htm?ls=true&l=en") 

# Get the data 
data <- GET("http://hk.ishares.com/product_info/fund/excel_histoverview.htm?ticker=2836", 
     set_cookies(en_page$cookies[[1]])) 

# Load into a data.frame 
a <- read.csv(textConnection(content(data)), skip = 5) 

head(a) 

基本上,我們從英文頁面的餅乾和我們發送這些請求。

+0

這很美。謝謝! – mchangun 2013-03-19 11:52:07