Я пытаюсь обойтись без интернет-трафика, но у меня не получается oop. Используя R - PullRequest
0 голосов
/ 09 июля 2020

каждому. Я знаю, что это глупо, и я бы не стал спрашивать, если бы я не проверял здесь каждый на l oop ответ.

Но мне нужно очистить 95 страниц, и я могу Я не понимаю, как это сделать. Использую rvest и dplyr.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

В основном вы можете сделать это так, но я думаю, что у вашего кода есть проблема с последней полной_ 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)
}
0 голосов
/ 09 июля 2020

Я предполагаю, что вы обобщаете переменную 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)

. Вам нужно будет поиграть с кодом, чтобы получить его в желаемом формате (например, список фреймов данных обычно бесполезен) но скрипт теперь зацикливается!

...