web-scraping - 使用 Rvest 获取表格
问题描述
我正试图刮桌子
解决方案
令牌需要作为请求标头发送,x-xsrf-token
而不是通过传递给参数:
此外,令牌值可能会随着会话而改变,因此您需要在 cookie 中获取它。之后,将数据转换为数据框,得到结果:
library(rvest)
pg <- html_session("https://www.barchart.com/options/stocks-by-sector?page=1")
cookies <- pg$response$cookies
token <- URLdecode(dplyr::recode("XSRF-TOKEN", !!!setNames(cookies$value, cookies$name)))
pg <-
pg %>% rvest:::request_GET(
"https://www.barchart.com/proxies/core-api/v1/quotes/get?lists=stocks.optionable.by_sector.all.us&fields=symbol%2CsymbolName%2ClastPrice%2CpriceChange%2CpercentChange%2ChighPrice%2ClowPrice%2Cvolume%2CtradeTime%2CsymbolCode%2CsymbolType%2ChasOptions&orderBy=symbol&orderDir=asc&meta=field.shortName%2Cfield.type%2Cfield.description&hasOptions=true&page=1&limit=1000000&raw=1",
config = httr::add_headers(`x-xsrf-token` = token)
)
data_raw <- httr::content(pg$response)
data <-
purrr::map_dfr(
data_raw$data,
function(x){
as.data.frame(x$raw)
}
)
推荐阅读
- quire-api - 如何使用 API 找到 Quire 任务的父任务?
- javascript - 按值减少对象数组并聚合
- amazon-web-services - AWS EC2 AMI 用户数据运行 PM2
- python - 卡在 Learn Python The Hard Way ex43.py 一个基于 OOP 的练习
- linux - 虚拟机更改默认网关?Nmap扫描
- javascript - 使用 localStorage 将变量传递到 iframe 加载的页面
- java - Android:从 snapshop 到 textview 检索值的空异常错误
- asp.net - ASP.NET Core 可以安全地将模型中的 ID 发送到客户端吗?
- python - 具有返回 None 的递归函数的 Python 代码 | 提供输入和输出
- c++ - Codelite:在 C++ 中使用仿函数时,悬停工具提示不起作用