From d5201f138b7c2fa062d26381603bfb12134ef71d Mon Sep 17 00:00:00 2001 From: Leon Burgard Date: Wed, 23 Jun 2021 14:14:13 +0200 Subject: [PATCH] added another possibility in fetch.R --- scraping/fetch.R | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/scraping/fetch.R b/scraping/fetch.R index dc71d27..1533634 100644 --- a/scraping/fetch.R +++ b/scraping/fetch.R @@ -30,3 +30,56 @@ 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) +}