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()
我是 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()