С помощью R делаем скриншоты

17-09-2019
Иногда стоит задача наглядно показать как выглядит рекламное объявление в выдаче Яндекса или Гугла, на тематической площадке или автоматически фиксировать сайт конкурентов. Рассмотрим как это можно решить с помощью языка R. Так как Яндекс фильтрует однотипные запросы с одного IP, то будем использовать прокси сервер.
Используем
  • R среда для статистических расчетов;
  • FTP сервис, куда будем выкладывать скриншоты;
  • Пакеты webshot (Winston Chang) и getProxy (Алексей Селезнев);
  • Power BI (для формирования отчета)
Последовательность действий:
  • Формируем в среде R данные для обработки;
  • Запускаем прокси;
  • Делаем снимок экрана;
  • Выгружаем данные на FTP;
  • Отключаемся от прокси;
  • Формируем отчет в Power BI

Шаблон кода для Яндекса
# webshot::install_phantomjs()
# install.packages("getProxy")
library(webshot)
library(RCurl)
library(bitops)
library(getProxy)

setwd("C:/YandexDisk/Clients_R/)
# Формируем объекты 
Word <- c("You word")
url <- "https://yandex.ru/search/?text="
rigionID <- "lr=213"
psw <- "password"
loginFTP <- "Login FTP"
ftpIP <- "000.00.00.000"
date <- as.POSIXlt(Sys.time())
wday <- date$wday
hour <- date$hour
prefix <- paste0("day_", wday, "_", "hour_", hour, ".", "png")
protocol <- "ftp://"
sep_1 <- ":"
sep_2 <- "/"
sep_3 <- "@"
localURL <- paste0(getwd(), sep_2, prefix)
ftputl <- paste0(protocol, loginFTP, sep_1, psw, sep_3, ftpIP, sep_2, prefix)

# Запускаем прокси
prox_ip_and_port <- getProxy(port = "3128", country = "RU", supportsHttps = TRUE, action = "start")

# делаем снимок экрана
webshot(paste0(url, Word,"&", rigionID), prefix, cliprect = "viewport")

# Загружаем данные на FTP
ftpUpload(what = localURL, to = ftputl)

# Отключаемся от прокси
getProxy(action = "stop")
Используем прокси
Прокси используем чтобы не получить вот такие скриншоты
Пример отчета
В Power BI можно сделать примерно вот такой вот отчет.