我的代码如下所示:
### Webpages
# The first webpage
url <- "https://www.finanzen.net/nachrichten/rubrik/ad-hoc-meldungen"
### Function to extract the links of the data for the MAIN PAGE
scraplinks <- function(url){
# Create an html document from the url
webpage <- xml2::read_html(url)
# Extract the URLs
url_ <- webpage %>%
rvest::html_nodes("a") %>%
rvest::html_attr("href")
# Extract the link text
link_ <- webpage %>%
rvest::html_nodes("a") %>%
rvest::html_text()
return(tibble(link = link_, url = url_))
}
urls <- scraplinks(url)
head(urls) # So this works
问题是数据不止一页。见下一个代码:
url <- "https://www.finanzen.net/nachrichten/rubrik/ad-hoc-meldungen@intpagenr_3"
例如,只需添加"@intpagenr_3 "就可以转到第三页。
我想提取10页的网页上的功能上面。
我的尝试是:
more_than_one_page <- function(url,number_of_pages) {
output1 <- scraplinks(url)
for (i in 1:number_of_pages){
output2 <- data.frame()
new_input <- scraplinks(paste0(url ,"@intpagenr_",i))
output2[nrow(new_input),] <- new_input # Adding one line is nrow(new_input) + 1
}
output <- rbind(output1, output2)
}
data1 <- more_than_one_page(url, 15)
但是我不知道如何添加新行,因为我不知道初始化的确切行数。
有人能猜一猜吗?如果有不明白的地方,请提问.谢谢.
我尝试了一个for循环,所以索引是网页的页码。但是我不知道如何初始化 Dataframe 的确切行。
1条答案
按热度按时间flvtvl501#
加上碱基R,你可以:
Map
将函数scraplinks
和Reduce
的结果的urls这些奇异项放到它们的rbind
行绑定块中:map(和reduce)策略在处理R结构时非常有用,特别是在避免循环时。有一个专用的包**{purrr}**支持这个策略。