使用 Rvest 抓取 HTML 表格不起作用

问题描述 投票:0回答:1

我正在尝试检索此网页的“结果表”选项卡下的表格

我在尝试检查此表的元素时遇到问题。

library(tidyverse)
library(rvest)

html_code <- read_html("https://bccsu-drugsense.onrender.com/")

html_code

## {html_document}
## <html>
## [1] <head>\n<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n<!-- Global site tag (gtag.js) - Google Analytics --><script async src="https://www ...
## [2] <body>\n        \n<div id="react-entry-point">\n    <div class="_dash-loading">\n        Loading...\n    </div>\n</div>\n\n        <footer><script id="_dash-con ...

通常这会返回 HTML 代码,但由于某种原因,它与我通过网页本身的开发工具看到的内容不匹配。

<body>
部分中返回的唯一元素是
<div class="_dash-loading">
。因此,当我尝试检查网页元素时,它返回 null。

html_code %>% html_elements("div") 
## {xml_nodeset (2)}
## [1] <div id="react-entry-point">\n    <div class="_dash-loading">\n        Loading...\n    </div>\n</div>
## [2] <div class="_dash-loading">\n        Loading...\n    </div>

html_code %>% html_elements("table") 
## {xml_nodeset (0)}

不确定

Loading...
在这种情况下意味着什么,因此将不胜感激任何建议和/或解决方法。谢谢你。

html rvest
1个回答
0
投票

该页面的内容通过 JavaScript 呈现。

rvest::read_html()
无法捕获此内容,因为它不执行 javascript。
rvest
当前的开发版本为此提供了一个新功能:
read_html_live()

它使用

chromote
软件包,该软件包依赖于您系统上安装的 Google Chrome。

安装开发版本的

rvest

remotes::install_github("tidyverse/rvest")

只需对代码进行少量修改,您就可以进入该表。我们使用

read_html()
代替
read_html_live()
。然后,我们使用
html_code$click()
模拟单击表格选项卡。最后,
rvest::html_table()
从 HTML 文档中提取表格并将其转换为
data.frame

library(tidyverse)
library(rvest)


html_code <- read_html_live("https://bccsu-drugsense.onrender.com/")
html_code$click("li.nav-item:nth-child(3) > a:nth-child(1)")
html_table(html_code)
© www.soinside.com 2019 - 2024. All rights reserved.