使用 R 从 API 调用 HTML/XML 数据
Calling HTML/XML data from an API using R
一位朋友向我发送了一个工作示例,但不幸的是,我真的很费劲,似乎无法弄清楚如何将信息提取到数据框中然后对其进行操作。
我最初以为我可以使用 JsonLite 简单地解析它,但事实证明这比预期的要棘手。有人可以帮我吗?将不胜感激!如果没有人愿意为我编写代码,我将非常感谢有人告诉我 link 的实际含义!
提供的URL是:smarkets.herokuapp.com/bets/{betID}
我试过id 123,响应结构好像不复杂:
library(jsonlite)
library(httr)
#convert response into string
my_url <- "http://smarkets.herokuapp.com/bets/123"
response <- GET(my_url)
text <- content(response,as = "text")
# string to list
my_list <- fromJSON(text)
#list to dataframe
mydf <- data.frame(t(sapply(my_list,c)))
示例结果:
> mydf
id user_id amount percentage_odds timestamp result
1 123 421 5.729698 16 2018-06-12T15:49:13.245956399Z FALSE
循环获取所有信息:
library(jsonlite)
library(httr)
library(glue)
#convert response into string
loop_items <- 1:1000
all_df <- data.frame()
for( i in 1 : 1000){
ua <- user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36")
my_url <- glue("http://smarkets.herokuapp.com/bets/{i}",
i = i)
response <- GET(my_url,ua)
text <- content(response,as = "text")
# string to list
my_list <- fromJSON(text)
#list to dataframe
mydf <- data.frame(t(sapply(my_list,c)))
all_df <- rbind(all_df,mydf)
#sleep 1 second
Sys.sleep(1)
cat(i," completed\n")
}
一位朋友向我发送了一个工作示例,但不幸的是,我真的很费劲,似乎无法弄清楚如何将信息提取到数据框中然后对其进行操作。
我最初以为我可以使用 JsonLite 简单地解析它,但事实证明这比预期的要棘手。有人可以帮我吗?将不胜感激!如果没有人愿意为我编写代码,我将非常感谢有人告诉我 link 的实际含义!
提供的URL是:smarkets.herokuapp.com/bets/{betID}
我试过id 123,响应结构好像不复杂:
library(jsonlite)
library(httr)
#convert response into string
my_url <- "http://smarkets.herokuapp.com/bets/123"
response <- GET(my_url)
text <- content(response,as = "text")
# string to list
my_list <- fromJSON(text)
#list to dataframe
mydf <- data.frame(t(sapply(my_list,c)))
示例结果:
> mydf
id user_id amount percentage_odds timestamp result
1 123 421 5.729698 16 2018-06-12T15:49:13.245956399Z FALSE
循环获取所有信息:
library(jsonlite)
library(httr)
library(glue)
#convert response into string
loop_items <- 1:1000
all_df <- data.frame()
for( i in 1 : 1000){
ua <- user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36")
my_url <- glue("http://smarkets.herokuapp.com/bets/{i}",
i = i)
response <- GET(my_url,ua)
text <- content(response,as = "text")
# string to list
my_list <- fromJSON(text)
#list to dataframe
mydf <- data.frame(t(sapply(my_list,c)))
all_df <- rbind(all_df,mydf)
#sleep 1 second
Sys.sleep(1)
cat(i," completed\n")
}