Как рассчитать внутренний PageRank

1. Установить R. Скачать последнюю версию можно здесь.

2. Запустить R и установить igraph.

install.packages("igraph")

3. Просканировать сайт через Screaming Frog и выгрузить исходящие внутренние ссылки

Как рассчитать внутренний PageRank

4. Положить CSV файл с результатом по адресу С:Пользователи/Имя_Пользователя/Документы

5. Запустить скрипт в R, предварительно поменяв свой домен в предпоследней строке

library(igraph)
map <- function(x, range = c(0,1), from.range=NA) {
if(any(is.na(from.range))) from.range <- range(x, na.rm=TRUE)

## check if all values are the same
if(!diff(from.range)) return(
     matrix(mean(range), ncol=ncol(x), nrow=nrow(x), 
         dimnames = dimnames(x)))

## map to [0,1]
x <- (x-from.range[1])
x <- x/diff(from.range)
## handle single values
if(diff(from.range) == 0) x <- 0 

## map from [0,1] to [range]
if (range[1]>range[2]) x <- 1-x
x <- x*(abs(diff(range))) + min(range)

x[x<min(range) | x>max(range)] <- NA

x
}
links <- read.csv("C:/Users/PC/Documents/all_outlinks.csv", skip = 1) # CSV Path
links <- subset(links, Type=="AHREF") # Optional line. Filter.
links <- subset(links, Follow=="true")
links <- subset(links, select=c(Source,Destination))
g <- graph.data.frame(links)
pr <- page.rank(g, algo = "prpack", vids = V(g), directed = TRUE, damping = 0.85)
values <- data.frame(pr$vector)
values$names <- rownames(values)
row.names(values) <- NULL
values <- values[c(2,1)]
names(values)[1] <- "url"
names(values)[2] <- "pr"
values$pr <- map(values$pr, c(1,10))
values <- values[grepl("https?:\\/\\/(.*\\.)?domain\\.ru.*", values$url),] # Domain filter.
write.csv(values, file = "C:/Users/PC/Documents/output-pagerank.csv") # Output file.

На выходе скрипт сгенерирует файл с весами output-pagerank.csv