我正在尝试检索此网页的“结果表”选项卡下的表格
我在尝试检查此表的元素时遇到问题。
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...
在这种情况下意味着什么,因此将不胜感激任何建议和/或解决方法。谢谢你。
该页面的内容通过 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)