【发布时间】:2023-03-14 05:40:02
【问题描述】:
目标:我正在尝试从篮球参考网站上抓取 NBA 球队的输赢记录。
更广泛地说,我试图更好地了解如何正确使用 CSS 选择器小工具从网站上抓取指定元素,但希望能找到解决此问题的方法。
我正在使用的网址 (https://www.basketball-reference.com/leagues/NBA_2018_standings.html) 上有多个表格,所以我尝试使用 CSS 选择器小工具来指定我想要的元素,即“扩展排名”表格 - 大约 1/页面下方的 3 条。
我已经阅读了有关网络抓取的各种教程,其中涉及 rvest 和 dplyr 包,以及 CSS 选择器网络浏览器插件(我已将其安装在我选择的浏览器 Chrome 中)。这就是我想要的。
到目前为止,这是我的代码:
url <- "https://www.basketball-reference.com/leagues/NBA_2018_standings.html"
css <- "#expanded_standings"
url %>%
read_html() %>%
html_nodes(css) %>%
html_table()
这段代码的结果是错误:
Error: html_name(x) == "table" is not TRUE
当我删除最后一行代码时,我得到:
url %>%
read_html() %>%
html_nodes(css)
{xml_nodeset (0)}
我定义 CSS 对象的方式/我使用 CSS 选择器工具的方式似乎存在问题。我一直在做的是单击所需表格的最右边缘,以便表格周围有一个矩形。
我还尝试单击表格中的特定“单元格”(即“65-17”,这是休斯顿火箭队行的“总体”列中的值),但这似乎突出了一些,但不是所有表格,以及网页上其他表格的随机部分。
谁能提供解决方案?如果你能帮助我理解我在哪里/为什么我在做什么是不正确的,那就加分。
提前致谢!
【问题讨论】:
-
试试
css <- "#confs_standings_E"看看是不是你想要的。我不觉得那个工具有用,检查效果很好。 -
在“会议排名”部分选择页面上的第一个表格。我正在尝试在页面下方选择一个表格,“扩展排名”。不过感谢您的帮助!
标签: r web-scraping css-selectors rvest