我正在尝试使用rvest-package从coinmarketcap.com获得一张表。
下面显示了一种解决方案。然而,这个不再起作用了。结果表为空。显然,这个网站不知何故发生了变化。
有人能提供解决方案吗?
首先要感谢大家!
library(rvest)
library(tidyverse)
library(xml2)
url<- "https://coinmarketcap.com/currencies/bitcoin/historical-data/"
table <- url %>%
read_html()%>%
html_table() %>%
as.data.frame()发布于 2021-04-27 06:00:14
你不需要增加浏览器的开销。您可以模拟API调用并解析json响应。
library(jsonlite)
library(tidyverse)
data <-jsonlite::read_json('https://web-api.coinmarketcap.com/v1/cryptocurrency/ohlcv/historical?id=1&convert=USD&time_start=1614297600&time_end=1619395200')$data$quotes
df <- map_df(data, function(x) {data.frame(x$quote)})
print(df)
# 1614297600 is Fri Feb 26 2021 00:00:00 GMT+0000 for 2021-02-27
# 1619395200 Mon Apr 26 2021 00:00:00 GMT+0000 for 2021-04-25time_start和end_start是unix时间戳,看起来像是一天的偏移量,不过您需要探索它是如何工作的,以及偏移量是否会在银行节假日/周末之间发生变化。
发布于 2021-04-26 19:27:35
现在动态加载网页。因此,您需要使用RSelenium,而不仅仅是rvest。
下面的代码适用于我:
url<- "https://coinmarketcap.com/currencies/bitcoin/historical-data/"
# RSelenium with Firefox
rD <- RSelenium::rsDriver(browser="firefox", port=4546L, verbose=F)
remDr <- rD[["client"]]
remDr$navigate(url)
Sys.sleep(4)
# get the page source
web <- remDr$getPageSource()
web <- xml2::read_html(web[[1]])
table <- html_table(web) %>%
as.data.frame()
# close RSelenium
remDr$close()
gc()
rD$server$stop()
system("taskkill /im java.exe /f", intern=FALSE, ignore.stdout=FALSE)https://stackoverflow.com/questions/67263876
复制相似问题