Rvest не возвращает данные

Я пытался очистить следующую таблицу:


person Rime    schedule 08.08.2020    source источник


Ответы (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