BY.Tan

记录点滴

httr包的用法

波比 / 2016-03-03


library("httr") # http请求处理的扩展包,这里用了 GET 和 content 两个函数
library("dplyr") # 利用这里的管道符号 %>% ,使得代码书写更有逻辑型
library("jsonlite") #将Json格式的数据转化为 R 语言的 list
# 微信|公众平台开发者文档:用户分析数据接口说明地址如下,可参考
# http://mp.weixin.qq.com/wiki/15/88726a421bfc54654a3095821c3ca3bb.html

i<-1
begin_date <- Sys.Date()-1
end_date <- Sys.Date() -1
api <- "https://api.weixin.qq.com/datacube/getusersummary"
access_token <- "ACCESS_TOKEN" # 微信公众号开负人员能获得这个具体的 ACCESS_TOKEN,这里只是示例,不提供具体的 token。

因为 access_token 是错误的,所以直接运行这个代码是不能成功的,这里只是一个说明示例.

 核心的只有两步:

GET 请求APi并获得返回结果

content 获取其中“真正的内容”,不包含其他状态什么的.

另外两个辅助的:第一行生成接口地址,参数什么可以在之前定义,可以使其变化,这个例子中主要是日期要变

第三行是将JSON文本转化为R语言的列表或者数据框,如果能简化的话;因为这里返回的是JSON所以这么处理;本质上API结果返回的是文本,可能是格式化的JSON,也可能是XML,这些都有比较成熟的函数来解析。

getUserSummary %>% paste0(api, "?access_token=", access_token, "&begin_date=", begin_date, "&end_date=", end_date) %>%
GET() %>%
content() %>%
fromJSON(simplifyDataFrame = TRUE) # 这里返回的还是列表,其中list才是所需的data.frame
getUserSummary <- getUserSummary$list 

摘自知乎:https://www.zhihu.com/question/39892848