在R中多页浏览网页&;级别,如何修复错误:';url不存在';?
我正试图从中搜集一些数据。我以前用多个页面成功地做到了这一点,但现在我正在尝试更深一层。但不幸的是,我得到了以下错误:在R中多页浏览网页&;级别,如何修复错误:';url不存在';?,r,web-scraping,rvest,R,Web Scraping,Rvest,我正试图从中搜集一些数据。我以前用多个页面成功地做到了这一点,但现在我正在尝试更深一层。但不幸的是,我得到了以下错误: 错误:'/storingen/25215-29-december-2018-defect-spoor-amersfoort-ede-wageningen'不存在。 这应该是正确的url,但我认为它缺少第一部分 https://www.rijdendetreinen.nl/storingen/25235-31-december-2018-seinstoring-groningen
错误:'/storingen/25215-29-december-2018-defect-spoor-amersfoort-ede-wageningen'不存在。
这应该是正确的url,但我认为它缺少第一部分
https://www.rijdendetreinen.nl/storingen/25235-31-december-2018-seinstoring-groningen-eemshaven
我似乎找不到问题的根源。我想我可能无法检索到整个url
我正在使用以下脚本:
库(tidyverse)
图书馆(rvest)
get_element_数据网站通常存储没有根域的内部链接,因此需要粘贴https://www.rijdendetreinen.nl
返回in@AndrewGustar是的,谢谢,HTML确实缺少根域。添加此项的最佳方式是什么?(代码中的什么地方?)我用paste0函数进行了尝试。它在下面这样的简单设置中工作,但在脚本内部不工作path在第二个函数中定义element\u url
后,添加一行element\u url No,这是因为您的一个链接返回为NA
。也许添加元素\u url谢谢@AndrewGustar解决了这个问题!
library(tidyverse)
library(rvest)
get_element_data <- function(link){
if(!is.na(link)){
html <- read_html(link)
Sys.sleep(2)
datum <- html %>%
html_node(".disruption-cause") %>%
html_text()
return(tibble(datum=datum))
}
}
get_elements_from_url <- function(url){
html_page <- read_html(url)
Sys.sleep(2)
route <- scrape_css(".disruption-line",".resolved",html_page)
problem <- scrape_css("em",".resolved",html_page)
time <- scrape_css(".timestamp",".resolved",html_page)
element_urls <- scrape_css_attr(".resolved","div","href",html_page)
element_data_detail <- element_urls %>%
map(get_element_data) %>%
bind_rows()
elements_data <- tibble(route=route, problem=problem, time=time, element_urls=element_urls)
elements_data_overview <- elements_data[complete.cases(elements_data[,2]), ]
return(bind_cols(elements_data_overview,element_data_detail))
}
scrape_write_table <- function(url){
list_of_pages <- str_c(url, 2)
list_of_pages %>%
map(get_elements_from_url) %>%
bind_rows()
}
trainDisruptions <- scrape_write_table("https://www.rijdendetreinen.nl/storingen?lines=&reasons=&date_before=31-12-2018&date_after=01-01-2018&page=")
View(trainDisruptions)