# www.websiteboosting.com / Patrik Lürwer & Mario Fischer # Codebeispiel für R - Website Boosting Ausgabe 64 # Aus der Serie "R Leuchtungen", Teil 3 # Alle Zeilen, die mit # beginnen, dienen nur der Erklärung # und werden von R ignoriert. # Hinweis. Die vier nachfolgenden Librarys müssen einmalig installiert # werden. Wie das geht, steht im Heft! Danach kann man die beiden Zeilen löschen. # Das erste Mal installieren: install.packages("jsonlite") install.packages("httr") # Danach können die oberen vier Zeilen mit einem # Kreuz "#" auskommentiert werden, dann werden sie künftig ignoriert # Nachfolgended werden die Librarys in den Speicher von R geladen: library(tidyverse) library(lubridate) library(httr) library(jsonlite) # 1. Config ------------------------------------------------------------------- # Eigenen eigenen Sistrix API-Key eintragen an Stelle von: MEIN_API_KEY # Den API Key bekommt man in der Sistrix Toolbox bei den Einstellungen API_KEY <- "MEIN_API_KEY" # 2. Domain definieren DOMAIN <- "https://www.domain.de/" # 3. Abzufragendes Datum definieren # Das Beispieldatum hier bei Bedarf einfach überschreiben # ACHTUNG: Es gehen nur bestimmte Datumswerte bei Sistrix, siehe Artikel! DATE <- "2020-09-21" # 4. Abzufragende Verzeichnisse definieren # Dazu werden die Pfade unten entsprechend überschrieben, hier 5 als Vorlage # Für mehr oder weniger Verzeichnisse Zeilen hinzufügen oder löschen und # beim letzten Verzeichnis kein Komma mehr dahinter machen! PATHS <- c( "https://www.domain.de/de/verzeichnis1/", "https://www.domain.de/de/verzeichnis2/", "https://www.domain.de/de/verzeichnis3/", "https://www.domain.de/de/verzeichnis4/", "https://www.domain.de/de/verzeichnis5/" ) # Function definition zur Abfrage der jeweiligen Endpoints -------------------- get_sistrix_data <- function(path, date, endpoint = c("sichtbarkeitsindex", "kwcount.seo.top10", "kwcount.seo")) { message("Get data: ", path) query_param <- list( path = path, date = date, format = "json", api_key = API_KEY ) r_json <- fromJSON( content( GET(paste0("https://api.sistrix.com/domain.", endpoint), query = query_param), as = "text")) r_df <- r_json[["answer"]][[1]][[1]] if (is.null(r_df)) { r_df <- tibble(path = path, date = date, value = 0) } else { r_df["path"] <- path } return(r_df) Sys.sleep(1) } # Hier laufen die Abfragen ----------------------------------------------------------- ## Sichtbarkeit si_data <- pmap_dfr(list(PATHS, DATE, "sichtbarkeitsindex"), get_sistrix_data) %>% mutate(date = date(date)) %>% rename(si = value) ## KW Top 10 kw_top_10 <- pmap_dfr(list(PATHS, DATE, "kwcount.seo.top10"), get_sistrix_data) %>% mutate(date = date(date)) %>% rename(kw_top_10 = value) ## KW Top 100 kw_top_100 <- pmap_dfr(list(PATHS, DATE, "kwcount.seo"), get_sistrix_data) %>% mutate(date = date(date)) %>% rename(kw_top_100 = value) # Aufbereitung der Daten ------------------------------------------------------- # Daten zusammenführen df <- si_data %>% inner_join(kw_top_10, by = c("date", "path")) %>% inner_join(kw_top_100, by = c("date", "path")) # Top 10 Anteil berechnen df <- df %>% mutate(pct_top_10 = kw_top_10 / kw_top_100) %>% replace_na(list(pct_top_10 = 0)) # Grafik erzeugen ------------------------------------------------------------- df %>% mutate(path = str_remove(path, DOMAIN)) %>% ggplot(aes(pct_top_10, kw_top_100, color = path, size = si)) + geom_point() + scale_x_continuous(labels = scales::percent_format()) + scale_y_continuous(labels = scales::label_number_auto()) + scale_color_brewer(palette = "Set1") + theme(legend.position = "top") + labs(title = paste0("High Performance Content Format am ", DATE, " für ", DOMAIN), x = "% Top 10 KWs", y = "Anzahl Top 100 KWs", color = "Pfad", size = "Sichtbarkeit") + guides(color = guide_legend(nrow = 2)) # Die erzeugte Grafik automatisch abspeichern mit gewähltem Datum im Dateinamen ggsave(paste0(DATE, "_hpcf.png"), w = 8, h = 6, type = "cairo-png") # Datei als CSV-File mit deutschen Trennzeichen im aktuellen R Arbeitsverzeichnis ausgeben ---- write_csv2(df, "sistrix_data.csv") # Alternativ dazu: ------------------------------------------------------------ # Datei als CSV-File in einem beliebigen anderen Verzeichnis ausgeben # Ist dann im Befehl unten anzupassen # Und das “#” entfernen vor dem Befehl “write…”, damit er aktiviert wird: # Im deutschen Format (Punkte, Kommata) schreiben: # write_csv2(df, "C:/Pfad/zur/datei/eigener_dateiname.csv") # Im US-Format (Punkte als Dezimalzeichen etc.) schreiben: # write_csv(df, "C:/Pfad/zur/datei/eigener_dateiname.csv") # Ende-------------------------------------------------------------------------