首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Rvest刮取网页

使用Rvest刮取网页
EN

Stack Overflow用户
提问于 2020-04-06 07:39:36
回答 1查看 86关注 0票数 0

我正在尝试从这个网络页面加载一些数据。我想要得到的信息部分是这个特定的部分:

我查看了页面,看到了这个类&id:

所以我就这样做了:

代码语言:javascript
复制
url = url(paste0("http://www.aemet.es/es/eltiempo/prediccion/avisos?w=mna"))
aa2 = html_nodes(read_html(url),
                 'div#listado-avisos.contenedor-tabla')

aa3 = data.frame(texto = str_replace_all(html_text(aa2),"[\r\n\t]" , ""),
                 stringsAsFactors = FALSE)

我得到一张没有任何信息的数据.我做错什么了?

提前谢谢。

更新:可能的答案多亏了QHarr:

代码语言:javascript
复制
library(httr)
library(rvest)
library(jsonlite)
url = "https://www.aemet.es/es/eltiempo/prediccion/avisos?w=mna"
download.file(url, destfile = "scrapedpage.html", quiet=TRUE)
date_value <- read_html("scrapedpage.html") %>% html_node('#fecha-seleccionada-origen') %>% html_attr('value')

url2 = paste0('https://www.aemet.es/es/api-eltiempo/resumen-avisos-geojson/PB/', date_value , '/D+1')
download.file(url2, destfile = "scrapedpage2.html", quiet=TRUE)

data <- httr::GET(url = "scrapedpage2.html", httr::add_headers(.headers=headers)) 

avisos = jsonlite::parse_json(read_html("scrapedpage2.html") %>%
  html_node('p') %>% html_text())
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-06 15:34:04

它是动态填充的。如果您不介意一些非常小的差异,您可以发出两个请求。一个到初始url以获取一个时间戳值;然后发出一个API请求(就像页面所做的那样),添加以前检索的时间戳,以便得到对正确时间段的预测。解析响应以获得持有avisos的json

代码语言:javascript
复制
library(httr)
library(rvest)
library(jsonlite)

headers = c('Referer' = 'https://www.aemet.es/es/eltiempo/prediccion/avisos?w=mna')

date_value <- read_html('https://www.aemet.es/es/eltiempo/prediccion/avisos?w=mna') %>% html_node('#fecha-seleccionada-origen') %>% html_attr('value')

data <- httr::GET(url = paste0('https://www.aemet.es/es/api-eltiempo/resumen-avisos-geojson/PB/', date_value , '/D+1'), httr::add_headers(.headers=headers)) 

avisos <- jsonlite::parse_json(read_html(data$content) %>% html_node('p') %>% html_text())$objects$Avisos$geometries
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61055020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档