如何解决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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。