从IP到Location的R函数 2011-12-23

有时网站日志(access log)数据中会有当前这次访问的IP地址,蕴含的信息其实是当前访客的地理位置or电信服务商位置。我们知道在现实生活中,推荐或者促销的一个重要维度实际上是地理位置。这跟羽绒服&加湿器在南方滞销而在北方就会畅销,制冷空调在南方畅销而在北方滞销是一个道理。因此如果可以实现从IP到Location的转换,就能可以用IP来一定程度上模拟出当前客户的地理位置。下面是国外网站上的一个API接口,实现了这种转换 http://www.datasciencetoolkit.org/ip2coordinates/125.39.132.33

以下是根据这个API接口包装的R function可以批量实现上述转换,不过目前的速度还比较慢。

IPtoLoc <- function(x) {
   URL_IP <- paste("http://www.datasciencetoolkit.org//ip2coordinates/",
                   x, sep = "")
   api_return <- readLines(URL_IP, warn = F)
   str_elements <- gsub("[^[:alnum:].]", "",
                        strsplit(api_return, "\"")[[1]])
   return(paste(str_elements[grep("longitude", str_elements)+1],
                str_elements[grep("latitude", str_elements)+1],
                sep = "; "))
}
#Location of KuanDaiTong
IPtoLoc("125.39.132.33");
#"116.388298034668; 39.9289016723633"

 



Powered by Jekyll on GitHub | ©2016 Meroa | Last modified: 2021-04-28