如何为整个R会话设置Cookie?

时间:2018-11-27 18:14:42

标签: r cookies weatherdata

我正在借助weatherData软件包获取天气数据,但是没有参数可以指定单位。该代码可以正常工作一会儿,以公制单位提取数据,但有时却停止工作并以英制单位提取数据。

我发现问题出在网站的Cookie中,与程序包无关。 程序包会打印网址,并从中下载数据,因此我用它来进行实验。当使用指定的cookie加载url时,数据看起来不错。

(单位可以在列名称中看到)

# Installing and loading packages
install.packages("readr")
install.packages("httr")
library(readr)
library(httr)

# The url for the data
url<-"https://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=ILIMBURG179&month=11&day=6&year=2018&dayend=27&monthend=11&yearend=2018&graphspan=custom&format=1"

# Getting the data with cookies
response <- GET(url, set_cookies(`Units` = "metric"))

# Reading and printing the data 
# (don't mind the weird empty lines, 
# the data cleaning is dorne in the package)
(df <- read_csv(content(x = response,as = 'text', encoding = "UTF-8")))
# Notice the Temperature in Celcius 

但是没有cookie

# Getting the data WITHOUT cookies
response <- GET(url)

# Reading and printing the data 
 (df <- read_csv(content(x = response,as = 'text', encoding = "UTF-8")))
# Notice the temperature in Fahrenheit

我的问题是,如何设置cookie,以便程序包在提取数据时使用它们? 这是下载数据的实际包和功能。

# installing and loading the package
install_github("Ram-N/weatherData")
library(weatherData)

# Pulling weather data for given station
(dat <- getWeatherForDate(station_id = "ILIMBURG179",
              start_date = "2018-11-06", 
              end_date = Sys.Date(), 
              station_type = "ID", 
              opt_detailed = F, 
              opt_all_columns = T))

我检查了软件包的源代码,但是我不熟悉用于下载数据的方法。我相信它使用功能curl()。 我能想到的唯一解决方案是修改程序包并将cookie设置在下载数据的位置。

0 个答案:

没有答案