【发布时间】:2018-12-07 22:20:45
【问题描述】:
我想抓取此页面上的第二个主表:https://www.hockey-reference.com/players/f/forsbfi01.html,“NHL Possession Metrics”表。 Rvest 应该能让我轻松做到这一点:
fil_link <- "https://www.hockey-reference.com/players/f/forsbfi01.html"
fil_pos <- fil_link %>%
read_html %>%
html_node(css = "#skaters_advanced") %>%
html_table(header = T)
但我收到此错误:
Error in UseMethod("html_table") :
no applicable method for 'html_table' applied to an object of class
"xml_missing"
我得到了第一个具有基本相同代码的表,同时换掉了 css 代码。另外,我查看了表格代码,检查以确保我得到了实际的表格选择器,而不是容器、内脏等。为什么不会刮掉?
【问题讨论】:
-
现代网页不是很容易抓取,因为大多数使用 javascript 来填充页面,而 rvest 无法执行 JavaScript。在这种情况下,该特定网页恰好也在评论块中包含一个普通表格。请务必先搜索“scrape”和您尝试抓取的网站的 URL,因为每个网站可能需要不同的技巧,并且已经为许多网站发布了解决方案。
-
该特定表格的 html 代码未格式化为 html 表格,但是这听起来可能很矛盾。 rvest html_table 将无法将其解析为矩阵。您可能需要提取每个元素并通过自定义函数对其进行解析。
-
啊。我知道了。谢谢
-
papelr,再问一遍。我找到了一个自定义解决方案。 @MrFlick 将此问题标记为重复,我会对此提出异议,因为您要求解析的表/html 结构与所谓的重复中存在的不等价。
-
@NicolásVelásquez 页面上的不同表格可能是技术上的问题,但提取数据将需要相同的技术。我们真的需要一个关于如何在每个网页上抓取每个表格的 SO 帖子吗?如果您能说明这有何不同,我将重新提出问题。该表似乎在评论中,就像其他问题一样。