模拟点击 R 中的下载按钮
Imitate click on download button from R
如何在 R 会话中模拟点击以下网站中的下载按钮并下载 TSV table?
https://comptox.epa.gov/dashboard/chemical_lists
我知道以前有Rselenium and PhantomJS, which are both somehow not up to date anymore and there's apparently V8。但是,我真的无法使用后者。
此站点从 GraphQL API 调用获取数据:
POST https://comptox.epa.gov/dashboard/graphql
当您单击下载按钮时,它会将相同的数据发送到另一个 api 以格式化数据并下载 tsv。
您可以从 API 获取数据并首先将其格式化为 tsv 文件:
library(httr)
query <- "{
lists {
label
abbreviation
short_description
chemical_count
updated_at
}
}"
r <- POST("https://comptox.epa.gov/dashboard/graphql",
content_type("application/json"),
body = list(
query = query
), encode = "json")
data <- content(r, "parsed")
#add link column
for(i in seq_along(data$data$lists)){
data$data$lists[[i]]$acronym <- paste("https://comptox.epa.gov/dashboard/chemical_lists", data$data$lists[[i]]$abbreviation, sep="/")
}
#convert to dataframe
df <- do.call(rbind.data.frame, data$data$lists)
write.table(df, file = "chemical.tsv", row.names=FALSE, sep="\t", quote = FALSE)
文件输出:
如何在 R 会话中模拟点击以下网站中的下载按钮并下载 TSV table?
https://comptox.epa.gov/dashboard/chemical_lists
我知道以前有Rselenium and PhantomJS, which are both somehow not up to date anymore and there's apparently V8。但是,我真的无法使用后者。
此站点从 GraphQL API 调用获取数据:
POST https://comptox.epa.gov/dashboard/graphql
当您单击下载按钮时,它会将相同的数据发送到另一个 api 以格式化数据并下载 tsv。
您可以从 API 获取数据并首先将其格式化为 tsv 文件:
library(httr)
query <- "{
lists {
label
abbreviation
short_description
chemical_count
updated_at
}
}"
r <- POST("https://comptox.epa.gov/dashboard/graphql",
content_type("application/json"),
body = list(
query = query
), encode = "json")
data <- content(r, "parsed")
#add link column
for(i in seq_along(data$data$lists)){
data$data$lists[[i]]$acronym <- paste("https://comptox.epa.gov/dashboard/chemical_lists", data$data$lists[[i]]$abbreviation, sep="/")
}
#convert to dataframe
df <- do.call(rbind.data.frame, data$data$lists)
write.table(df, file = "chemical.tsv", row.names=FALSE, sep="\t", quote = FALSE)
文件输出: