每个人。我知道这很愚蠢,我不会问我是否没有在这里检查每个 for循环答案。
但是我需要刮取95页,但我不知道该如何循环。
这是代码:
url <- "https://www.riksdagen.se/sv/Dokument-Lagar/?datum=2000-01-01&q=kvinn&st=2&tom=2018-12-31&doktyp=fr&p="
page <- read_html(url)
title_html <- html_nodes(page,'.medium-big')
text_html <- html_nodes(page,'.font-bold')
full_html <- html_nodes(page, '.medium-smaller')
text_html[[21]] <- NULL
full_html[c(1, 21, 22)] <- NULL
title <- html_text(title_html)
text <- html_text(text_html)
full <- html_text(full_html)
frame <- data.frame(title, text, full)
除了我需要逐页浏览外,它为我提供了我需要的一切。我正在使用rvest和dplyr。
谢谢。
答案 0 :(得分:0)
我假设您将url变量归纳为字符串url的向量。如果是这样,您可以执行以下操作
urls <- c("url1", "url2", "url3")
myScrape <- function(url) {
age <- read_html(url)
title_html <- html_nodes(page,'.medium-big')
text_html <- html_nodes(page,'.font-bold')
full_html <- html_nodes(page, '.medium-smaller')
text_html[[21]] <- NULL
full_html[c(1, 21, 22)] <- NULL
title <- html_text(title_html)
text <- html_text(text_html)
full <- html_text(full_html)
data.frame(title, text, full)
}
all_pages <- lapply(urls, myScrape)
您将需要使用代码来将其转换为所需的格式(例如,通常不使用数据帧列表),但是脚本现在循环了!
答案 1 :(得分:0)
基本上您可以这样做,但是我认为您的代码在有关每个页面的最后full_html信息方面存在问题:
library(rvest)
url <- "https://www.riksdagen.se/sv/Dokument-Lagar/?datum=2000-01-01&q=kvinn&st=2&tom=2018-12-31&doktyp=fr&p="
data <- NULL
for (i in 1:95){
page <- read_html(paste0(url, i))
title_html <- html_nodes(page,'.medium-big')
text_html <- html_nodes(page,'.font-bold')
full_html <- html_nodes(page, '.medium-smaller')
text_html[[21]] <- NULL
full_html[c(1, 21, 22)] <- NULL
title <- html_text(title_html)
text <- html_text(text_html)
full <- html_text(full_html)
frame <- data.frame(title, text, full)
data <- rbind(data, frame)
}