【问题标题】:Css selector issue with rvest and NHL statisticsrvest 和 NHL 统计数据的 Css 选择器问题
【发布时间】:2018-10-16 00:24:43
【问题描述】:

我想从 hockey-reference.com 抓取数据,特别是从这个链接:

https://www.hockey-reference.com/leagues/NHL_1991.html

我想要第 4 个表,称为“团队统计数据”,并且我还想减去第一行和最后一行(但这可以是另一次)。

最初,我希望抓取 1991 年的链接,但我希望最终抓取 1991 年到 2017 年的每个链接。

library(tidyverse)
library(rvest)

stat_urls <- "https://www.hockey-reference.com/leagues/NHL_1991.html"

为了简单起见,我现在只有 1991 年的链接。在使用实际网页的“检查”源进行了相当彻底的搜索之后,即使我尝试了多种不同的选择,我似乎也找不到正确的 css 选择。我尝试了以下 CSS 选择:

table#stats.sortable.stats_table.now.sortable
#stats
#all_stats
#all_stats > div.table_outer_container
#stats
#stats > tbody
#div_stats (and all sorts of combos with this one)

在以下代码中使用时,这些都不起作用:

team_stats <- stat_urls %>% 
 read_html() %>%
 html_nodes("#stats") %>% 
 html_table(header = T)

所有使用“xpath=”的尝试也都失败了。对此的任何帮助都将是绝对惊人的,Go Preds!


【问题讨论】:

    标签: html css r rvest


    【解决方案1】:

    您可以尝试使用 RSelenium。在这里看到了类似的答案:Web Scraping Basketball Reference using R

    library(rvest)
    library(RSelenium)
    startServer() 
    remDr<-remoteDriver(browserName = "chrome")
    remDr$open()
    
    remDr$navigate("https://www.hockey-reference.com/leagues/NHL_1991.html")
    page <- read_html(remDr$getPageSource()[[1]])
    table <- html_table(page, fill = TRUE)
    table[[28]]
    

    虽然安装 selenium 很痛苦,但我也会尝试帮助解决这个问题,但我是前一段时间安装的,所以不太记得了。祝你好运


    来自发布原始问题的人:

    上述答案有效,但我必须通过 Homebrew:

    https://brew.sh/
    

    然后我不得不从这里使用以下代码:

    Using Selenium on Mac Chrome

    # download selenium jar
    curl -L0 https://selenium-release.storage.googleapis.com/3.9/selenium- 
    server-standalone-3.9.1.jar -o selenium-server-standalone.jar
    
    # install chromedriver
    brew install chromedriver
    
    # start chrome driver
    brew services start chromedriver                                                                                                                                                                      
    #==> Successfully started `chromedriver` 
    (label:homebrew.mxcl.chromedriver)
    
    # start selenium server
    java -jar selenium-server-standalone.jar                                                                                                                                                                           
    #14:38:20.684 INFO - Selenium build info: version: '3.9.1', revision: 
    '63f7b50'
    #14:38:20.685 INFO - Launching a standalone Selenium Server on port 
    4444
    

    【讨论】:

    • 我使用 devtools 毫无问题地下载了 RSelenium,但我无法连接到它应该连接的任何地方......将继续努力。谢谢!
    • 另外,startServer() 现在已经失效了……所以我想我应该使用 rsDriver()……对如何连接它感到困惑。嗯
    • 您可以致电rsDriver(geckover = NULL, phantomver = NULL) 加载RSelenium 驱动程序以与Chrome 一起使用。 (这两个参数关闭了对 Gecko 的支持,即 Firefox 和 PhantomJS,一个浏览器模拟器。一旦一切正常,你可能需要verbose = FALSE。)
    • @user2554330 - 代码返回“无法确定服务器状态” - 有什么想法吗?与“端口”有关?
    • 如果端口有问题,你会得到一个不同的错误。这看起来可能是 Java 问题,或者其他阻止 Selenium 服务器启动的问题。除了建议 Java 更新和重新安装 Selenium 之外,我不知道如何修复它。 (不幸的是,重新安装很困难:RSelenium 会尝试将其安装在某个地方,您需要找到该位置并删除文件。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    相关资源
    最近更新 更多