R / Rvest / RSelenium:从 JS 站点抓取数据

R / Rvest / RSelenium: scrape data from JS Sites

我是 R 和 Rvest 网络抓取主题的新手。使用 rvest,您可以抓取静态 HTML,但我发现 rvest 很难从基于 JS 的重度站点中抓取数据。

我找到了一些文章或博客文章,但它们似乎被贬低了 https://awesomeopensource.com/project/yusuzech/r-web-scraping-cheat-sheet

在我的例子中,我想从体育博彩网站上刮赔率,但由于 JS,我认为使用 rvest 和 SelectorGadget 这是不可能的。

2018 年有一篇关于从 PaddyPower(https://www.r-bloggers.com/how-to-scrape-data-from-a-javascript-website-with-r/) 抓取 Odds 的文章,但这也已经过时了,因为 PhantomJS 不再可用。 RSelenium 似乎是一个选项,但 repo 有很多问题 https://github.com/ropensci/RSelenium

那么是否可以在当前状态下使用 RSelenium,或者我有哪些选项可以代替 RSelenium?

亲切的问候

wdman 包的帮助下,我使用 RSelenium 没有遇到任何问题,这让我不用为 Docker 烦恼。 wdman 还会获取您需要的所有二进制文件(如果它们尚不可用)。很不错的魔法。
这是一个使用 Chrome 启动 Selenium 实例的简单脚本,打开一个站点,将内容获取为 xml,然后再次将其全部关闭。

library(wdman)
library(RSelenium)
library(xml2)

# start a selenium server with wdman, running the latest chrome version
selServ <- wdman::selenium(
  port = 4444L,
  version = 'latest',
  chromever = 'latest'
)

# start your chrome Driver on the selenium server
remDr <- remoteDriver(
  remoteServerAddr = 'localhost',
  port = 4444L,
  browserName = 'chrome'
)

# open a selenium browser tab
remDr$open()

# navigate to your site
remDr$navigate(some_url)

# get the html contents of that site as xml tree
page_xml <- xml2::read_html(remDr$getPageSource()[[1]])

# do your magic
# ... check doc at `?remoteDriver` to see what your remDr object can help you do.

# clean up after you
remDr$close()
selServ$stop()