Hatena::ブログ(Diary)

盆栽日記

2017-07-27

口コミからプロバイダの速度を比較する

プロバイダわからん。

とりあえず下りの速度が遅すぎなければいい。

ということで口コミサイトの結果から比較する。

以下書きなぐりコード。

library(rvest)
library(dplyr)
library(tidyr)
library(stringi)  

# 以下よりソースをダウンロード
# http://netspeed.studio-radish.com/cgi-bin/netspeed/openresult/openresult.cgi

dat <- read_html("~/downloads/result.html")
numbers <- dat %>% html_nodes(xpath="//*[contains(@class,'graphmarker')]") %>% html_text()
tags <- dat %>% html_nodes(xpath="//nobr") %>% html_text()
detail <- dat %>% html_nodes(xpath="//*[contains(@class,'speeddata2')]") %>% html_text()
result <- data.frame(type = tags[tags %in% c("上り","下り")],
                     speed = gsub("Mbps|kbps", "", numbers) %>% as.numeric(),
                     stringsAsFactors = FALSE)
result$speed <- if_else(grepl("kbps",numbers),result$speed/1000, result$speed)

# 下りの時にインクリメント
i <- 0
result$num <- NA
for(n in seq_len(nrow(result))){
  if(result$type[n]=="下り"){
    i <- i + 1  
    result$num[n] <- i
  }else{
    result$num[n] <- i
  }

}

result_s <- result %>% spread(key=type, value=speed)
result_s$detail <- gsub("\\n|\\t", "", detail)
result_s$provider <- result_s$detail %>% stri_replace_first_regex(".+プロバイダ\\: (.*)測定地.+$","$1")
result_s$provider <- ifelse(grepl("使用回線", result_s$provider), NA, result_s$provider)

final <- result_s %>% group_by(provider) %>% summarise(count=n(), 
                                              mean_上り=mean(上り),
                                              max_上り=max(上り),
                                              min_上り=min(上り),
                                              median_上り=median(上り),
                                              mean_下り=mean(下り),
                                              max_下り=max(下り),
                                              min_下り=min(下り),
                                              median_下り=median(下り)
                                              )

library(openxlsx)
write.xlsx(final, "プロバイダ間比較.xlsx")

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/dichika/20170727/p1