-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathscreenshot_script.R
65 lines (57 loc) · 1.96 KB
/
screenshot_script.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
65
library(webshot2)
library(purrr)
library(dplyr)
# Lista portais
portais <- tibble(
url = c("https://oglobo.globo.com/",
"https://www.folha.uol.com.br",
"https://www.estadao.com.br",
"https://g1.globo.com/",
"https://istoe.com.br/",
"https://www.metropoles.com/",
"https://www.poder360.com.br",
"https://extra.globo.com/"
# "https://www.r7.com",
# "https://veja.abril.com.br",
# "https://www.ig.com.br",
# "https://www.cartacapital.com.br"
),
nome = c("oglobo", "folha", "estadao", "g1",
"istoe", "metropoles", "poder360", "extra"
),
tier = c(rep("_tier1", 4),
rep("_tier2", 4)
)
) %>%
dplyr::group_by(tier) %>%
dplyr::mutate(
ordem = paste0("foto", row_number(), "_"),
file = paste0("./screenshots/", ordem, nome, tier, ".png")
) %>%
dplyr::ungroup()
# Mantem apenas variáveis a serem usadas
portais <- portais %>% dplyr::select(url, file, nome)
# Cria um wrapper em torno da função de screenshot
# que inclui delay e torna a função "verbose"
paparazzi <- function(url, file, nome) {
print(paste0("Fotografando ", nome, "..."))
paths = paste0("./screenshots/",list.files("./screenshots"))
if (!(file %in% paths)) {
webshot2::webshot(url = url, vwidth = 1500, vheight = 2000,
file = file, delay = 25, cliprect = "viewport")
} else {
print(paste0("Fotografia de ", nome, " já encontrada! Seguindo..."))
}
Sys.sleep(10)
}
# Efetua o screenshot um portal por vez. Tenta todos portais mesmo que um falhe
safe_paparazzi <- purrr::safely(paparazzi)
purrr::pwalk(
.l = portais,
.f = safe_paparazzi
)
# Confirma a obtenção de todas as imagens. Provoca erro em caso de imagem faltante
paths = paste0("./screenshots/",list.files("./screenshots"))
if (sum(portais$file %in% paths) != 8) {
stop("Nem todas imagens foram obtidas. Fotografando novamente...")
}