教你用R语言来批量查询IP地址

在做用户画像中有关用户的地域分布时,我从数据库里捞取了一堆活跃用户的IP地址,将近30万个左右;问了一圈也没发现谁有IP地址信息库,百度后发现可供使用的第三方接口很多,比如Sina、搜狐、淘宝等等;这里我选择Sina IP接口。
<p>Sina IP接口信息:</p>
<p><code>查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=IP地址.</code></p>
<p><code>返回信息:var remote_ip_info = {"ret":1,"start":"114.114.112.0","end":"114.114.119.255","country":"\u4e2d\u56fd","province":"\u6c5f\u82cf","city":"\u5357\u4eac","district":"","isp":"\u7535\u4fe1","type":"","desc":"\u5357\u4eac\u4fe1\u98ce114dns\u4e13\u5c5e"};</code></p>
<p>返回数据格式:(json格式的)国家 、省(自治区或直辖市)、市(县)、运营商;比如:</p>
<p><code>{"code":0,"data":{"ip":"210.75.225.254","country":"\u4e2d\u56fd","area":"\u534e\u5317","region":"\u5317\u4eac\u5e02","city":"\u5317\u4eac\u5e02","county":"","isp":"\u7535\u4fe1",
"country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000",
"county_id":"-1","isp_id":"100017"}}</code></p>
我的原始IP数据示例如下图:

ip数据清单
ip数据清单

R代码实现如下:
<pre><code>###ip批量查询

<p>#设置文件目录

setwd("A:\\数据分析师的成长\\zfancy.R")

library(RCurl) #调用getURL()函数<p>
<p>library(RJSONIO) #调用fromJSON()函数

Sinaurl <- function(ip){

paste("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=",ip,sep="")} #sinaIP API

Ip_yb <- read.csv("A:\\数据分析\\用户基本画像\\ip数据.csv",
<p>stringsAsFactors = F,header = T) #导入测试样本ip

构造函数fanxi

fanxi <- function(aaa){
AA <- NA;BB <- NA;url <- NA;cou <- NA;pro <- NA;cit <- NA ;

ip <- NA#定义初始值为0

for (i in 1:nrow(aaa)){
AA[i] <- Sinaurl(aaa[i,1]) #接口请求连接

url[i] <- getURL(AA[i]) #接口返回结果

BB[i] <- strsplit(url[i],"=")

BB[i] <- gsub("^ ","",BB[i][[1]][2]) #去掉首行空格

BB[i] <- gsub(";","",BB[i]) #去掉尾部分号

cou[i] <- fromJSON(BB[[i]])[4:6]$country #提取国家

pro[i] <- fromJSON(BB[[i]])[4:6]$province #提取省份

cit[i] <- fromJSON(BB[[i]])[4:6]$city #提取城市

ip[i] <- aaa[i,1]

Sys.sleep(1) #每次循环休眠1s

}

return(data.frame(ip=ip,country=cou,province=pro,city=cit))#汇总结果
}

<p>#定义结果输出列表

MM <- list()

n <- ceiling(nrow(Ip_yb)/100)-1 #将原样本等分,除最后一份外,每份均含100个观测值

pb <- txtProgressBar(min = 0, max = n, style = 3) #设置循环进度条

for (i in 1:n){
MM[[i]] <- fanxi(data.frame(Ip_yb[(100i-99):(100i ),],

stringsAsFactors = F))
<p>##此处一定要注意添加stringsAsFactors=F,不然ip带不出来

Sys.sleep(1.35) #每次循环休眠1.35s,防止连接中断

setTxtProgressBar(pb,i)
}
<p>#MM[[n+1]] <- fanxi(data.frame(Ip_yb[(1000*n+1):nrow(Ip_yb),],
stringsAsFactors = F))#匹配最后一份数据

MM <- fanxi(Ip_yb)

result <- do.call(rbind,MM)
<p>#导出数据

setwd("A:\\数据分析\\匹配结果")

write.csv(result,"ip.CSV")
</pre></code>
"匹配结果.csv"的局部如下:

匹配结果
匹配结果

总结:30万的数据匹配下来总计耗时15h左右;for循环的执行效率实在是慢啊;希望能帮助到有需要的人;也恳请路过高人指点一二//

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容