R / Rvest / RSelenium:从JS网站刮取数据

问题描述

我是R和Rvest的Web抓取主题的新手。使用rvest可以抓取静态HTML,但我发现rvest努力从基于JS的繁重站点中抓取数据。

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

就我而言,我想从体育博彩网站上赔率,但对于rvest和SelectorGadget,由于JS,在我看来这是不可能的。

2018年有一篇Articel关于从PaddyPower(https://www.r-bloggers.com/how-to-scrape-data-from-a-javascript-website-with-r/)刮取赔率,但这也已经过时,因为PhantomJS不再可用。 RSelenium似乎是一种选择,但是仓库中有很多问题https://github.com/ropensci/RSelenium

那么有可能在当前状态下使用RSelenium,或者我有什么替代RSelenium的选项?

亲切的问候

解决方法

RSelenium软件包的帮助下使用wdman并没有问题,这使我不必再为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()