r语言 - 使用 rvest 进行网页抓取,值显示为"0"



我正在通过一个私人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)

最新更新