/
save2wm.R
64 lines (48 loc) · 1.84 KB
/
save2wm.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# użycie: raport <- save2wm(c('http://wp.pl/','http://prezydent.pl/'))
# funkcja przyjmuje też listy lub kolumny z ramki danych
save2wm <- function(urls) {
s <- NULL
w <- 'https://web.archive.org/save/'
l <- length(urls)
i <- 1
for(u in urls){
cat(paste0('Przetwarzam adres ',i,'/',l,' (',round(i/l * 100),'%)\n'))
cat(paste0(u,'\n'))
tryCatch(
expr = {
r <- httr::GET(paste0(w,u))
if(r$status_code == 200) {
# status odpowiedzi 200 oznacza, że strona została poprawnie zapisana w Wayback Machine
# wpisywanie do ramki danych odpowiedzi serwera z adresem archiwalnej kopii strony
s <- rbind(as.data.frame(list(original_url = u, saved_url = paste0('https://web.archive.org',r$headers$`content-location`)),stringsAsFactors = FALSE),s)
} else {
# wpisywanie do ramki danych statusu odpowiedzi serwera
s <- rbind(as.data.frame(list(original_url = u, saved_url = as.character(r$status_code)),stringsAsFactors = FALSE),s)
}
cat(paste0('Status odpowiedzi: ', r$status_code,'\n'))
},
error = function(e){
message('Wystąpił błąd!')
print(e)
cat('-----------------------------------------\n')
},
warning = function(w){
message('Ostrzeżenie!')
print(w)
cat('-----------------------------------------\n')
},
finally = {
message('Odpowiedź serwera zapisana')
}
)
# zawieszenie działania skryptu, dzięki czemu można zmieścić się w limicie zapytań
cat('Czekam 12 sekund ')
for(e in 0:11) {
cat('#')
Sys.sleep(1)
}
cat('\n-----------------------------------------\n')
i <- i + 1
}
return(s)
}