我正在通过一个私人Covid-p项目深入研究R:http://members.chello.at/charmingquark/Covid19_Report_v2.1.html
现在,我试图用rvest
从这个网站上刮来的一些数字来扩展收集到的信息:https://info.gesundheitsministerium.gv.at/
在第一步中,我想将数字显示为文本,稍后再从地图中获取数字:数字-info.gesundheitsministerium.gov.at/
我看了一些教程,测试了一个视图,所有的东西都成功了,但在这种情况下,我只是回到了零。。。
cov_impf_db_url <- read_html("https://info.gesundheitsministerium.gv.at/")
cov_impf_db_url %>%
html_nodes(".text-5xl.tabular-nums") %>%
html_text()
导致
[1] "0" "0" "0"
如果我只使用
cov_impf_db_url %>%
html_nodes(".text-5xl.tabular-nums")
我得到
{xml_nodeset (3)}
[1] <p class="text-5xl tabular-nums" id="Vaccinations">0</p>
[2] <p class="text-5xl tabular-nums" id="estimatedVaccinations">0</p>
[3] <p class="text-5xl tabular-nums" id="deliveredVaccinations">0</p>
拟合前一个输出,但当我查看网站时;0";,例如:
<p class="text-5xl tabular-nums" id="Vaccinations">63.280</p>
我刚开始使用rvest,从未使用过html,所以我有点迷失了方向,并感谢任何提示。谢谢,
c|q
刚刚通过这篇帖子找到了一个替代方案:使用javascript 进行rvest web抓取
后台有2个csv文件:https://info.gesundheitsministerium.gv.at/data/laender.csvhttps://info.gesundheitsministerium.gv.at/data/national.csv
我将与这些人合作,但仍然对最初问题的解决方案感兴趣。。。thx
数字动态加载;因此,代替rvest
,可以使用RSelenium
来获取数据。
它适用于我的代码:
cov_impf_db_url <- "https://info.gesundheitsministerium.gv.at/"
rD <- RSelenium::rsDriver(browser="firefox")
remDr <- rD[["client"]]
remDr$navigate(cov_impf_db_url)
# scroll down a bit and wait some seconds
remDr$executeScript(paste("scroll(0,",i*10000,");"))
Sys.sleep(5)
# fetch the html code
cov_impf_db <- remDr$getPageSource()
cov_impf_db <- xml2::read_html(cov_impf_db[[1]])
# read the numbers
cov_data <- rvest::html_nodes(cov_impf_db, ".text-5xl.tabular-nums")
cov_data <- rvest::html_text(cov_data)
# end the session
remDr$close()
gc()
rD$server$stop()
system("taskkill /im java.exe /f", intern=FALSE, ignore.stdout=FALSE)