source("../utils/helpers.R") source("config.R") library(RCurl) library(stringr) mk_absolute_url <- function(path) paste0("https://www.bundestag.de", path) mk_url <- function(offset) { mk_absolute_url %$% sprintf("/ajax/filterlist/de/services/opendata/543410-543410?offset=%d", offset) } download_protocol <- function(path, name) { fp <- paste0(DOWNLOAD_DIR, name) try %$% download.file(mk_absolute_url(path), fp, quiet=T) } fetch_batch <- function(offset) { url <- mk_url(offset) res <- getURL(url) paths <- str_match_all(res, "/resource/blob/.*?/([0-9]*-data\\.xml)")[[1]] mapply(download_protocol, paths[,1], paths[,2]) return(length(paths) > 0) } # TODO: error handling # - what if: page not reachable # - wrong format, etc. fetch_all <- function() { offset <- 0 while(fetch_batch(offset)) offset <- offset + 10 } #______________________________________________________________________________ #Auf diese Weise funktioniert das Programm bei mir, da kein RCurl mehr #verwendet wird. Es ist allerdings nicht mehr so schön und die Idee dazu hat #mir Daniela gegeben. Im Grunde ist es sehr ähnlich zu dem Live-Blatt L04. #Das Programm gibt mir eine Liste von allen Protokollen der 19. Wahlperiode #zurück (falls man return(all_protocols) entkommentiert). #Ich verstehe noch nicht so richtig wie man die Protokolle dann abspeichert #(die for-Schleife zum Download läuft deswegen noch nicht ganz, sollte aber #relativ leicht zum laufen gebracht werden, wenn man weiß, wie die Dateien #abzuspeichern sind). source("../utils/helpers.R") source("config.R") library(stringr) library("xml2") library(rvest) mk_absolute_url <- function(path) paste0("https://www.bundestag.de", path) mk_url <- function(offset) { mk_absolute_url %$% sprintf("/ajax/filterlist/de/services/opendata/543410-543410?offset=%d", offset) } read <- function(offset){ read_html(mk_url(offset)) } fetch_batch <- function(offset){ read(offset) %>% html_elements("a") %>% html_attr("href") -> paths protocols <- mk_absolute_url(paths) all_protocols <<- c(all_protocols, protocols) return(length(paths) > 0) } fetch_all <- function(){ all_protocols <<- c() offset <- 0 while(fetch_batch(offset)) offset <- offset + 10 for(i in 1:length(all_protocols)){ download.file(all_protocols[i], paste0(DOWNLOAD_DIR, i)) #cannot open destfile '../data/1', reason 'No such file or directory' #verstehe noch nicht so richtig unter welchem Pfad ich das abspeichern muss } # return(all_protocols) }