【问题标题】:Rvest only scrapes part of the tableRvest 只刮桌子的一部分
【发布时间】:2021-09-21 16:25:49
【问题描述】:

我是 Rvest 的新手。 我正在尝试从该网站上抓取有关加密货币的信息: https://coinmarketcap.com/.

我可以抓取表中前 10 种货币的所有信息,但对于其他货币,我只能获得名称和价格。 什么原因? 如何抓取所有货币的所有信息?

我的代码:

library(rvest)
market <- as.data.frame(read_html('https://coinmarketcap.com/')  %>%
  html_table(fill = TRUE)) 
 

【问题讨论】:

    标签: r html-table rvest


    【解决方案1】:

    网页“动态”加载,而不是一次加载,因此您需要使用RSelenium 而不是rvest

    以下是否有效?

    url<- "https://coinmarketcap.com/"
    
    # 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, fill = TRUE) %>%
      as.data.frame()
    
    # close RSelenium
    remDr$close()
    gc()
    rD$server$stop()
    system("taskkill /im java.exe /f", intern=FALSE, ignore.stdout=FALSE)
    

    顺便说一下,网页似乎有一个 API。您可以通过该 API 更有效地获取相同的数据。

    【讨论】:

      猜你喜欢
      • 2019-07-22
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多