Я пытался очистить следующую таблицу:
Rvest не возвращает данные
Ответы (1)
Ваша проблема заключалась в том, что ваш запрос доставил вам html-сайт, а не ответ json. Таким образом, синтаксический анализ его как json завершился ошибкой, которую вы видели.
(Я не могу точно сказать, было ли это из-за того, что вы пропустили accept_json()
, или из-за того, что вы использовали URL-адрес, который был немного неверным.).
В любом случае, реконструируя основы запроса API за таблицей, которую вы связали, вам нужно будет собрать что-то вроде этого:
require(httr)
require(dplyr)
library(purrr)
first_req <- GET("https://www.barchart.com")
xsrf_token <- cookies(first_req) %>% filter(name == 'XSRF-TOKEN') %>% pull(value) %>% URLdecode()
req <- GET(
"https://www.barchart.com/proxies/core-api/v1/quotes/get",
query = list(
lists = "stocks.optionable.by_sector.all.us",
fields = "symbol,symbolName,lastPrice,priceChange,percentChange,highPrice,lowPrice,volume,tradeTime,symbolCode,symbolType,hasOptions",
orderBy = "symbol",
orderDir = "asc",
meta = "field.shortName,field.type,field.description",
hasOptions = TRUE,
#page = 1,
#limit = 100,
raw = 1
),
content_type_json(),
accept_json(),
add_headers(
"x-xsrf-token" = xsrf_token,
"referrer" = "https://www.barchart.com/options/stocks-by-sector?page=1"
)
)
table_data <- req %>%
content() %>%
.$data %>%
map_dfr(unlist)
Это даст вам полный список из 4258 элементов и превратит его в табличку для удобства :)
person
alex_jwb90
schedule
05.09.2020