【问题标题】:Web scraping with rvest, values come out as "0"使用 rvest 进行网络抓取,值显示为“0”
【发布时间】:2021-01-13 22:59:53
【问题描述】:

我正在通过一个私人 Covid-Project 深入研究 R: http://members.chello.at/charmingquark/Covid19_Report_v2.1.html

现在我尝试用从这个网站上用rvest 刮掉的一些数字来扩展收集到的信息: https://info.gesundheitsministerium.gv.at/

在第一步中,我想获取显示为文本的数字,然后是地图中的数字: numbers - info.gesundheitsministerium.gv.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


刚刚通过这篇文章找到了一个替代方案: rvest web scraping with javascript

后台有 2 个 csv 文件: https://info.gesundheitsministerium.gv.at/data/laender.csv https://info.gesundheitsministerium.gv.at/data/national.csv

我将处理这些问题,但仍会对原始问题的解决方案感兴趣... 谢谢

【问题讨论】:

  • 这些数字是使用javascript动态插入到页面中的,所以rvest在这里不起作用。您找到的解决方案是好方法。您可以将其添加为下面的答案。

标签: r web-scraping rvest


【解决方案1】:

数字动态加载;因此,可以使用RSelenium 代替rvest 来获取数据。

这个代码对我有用:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多