教你用R語言來批量查詢IP地址

在做用戶畫像中有關(guān)用戶的地域分布時褂微,我從數(shù)據(jù)庫里撈取了一堆活躍用戶的IP地址,將近30萬個左右;問了一圈也沒發(fā)現(xiàn)誰有IP地址信息庫美侦,百度后發(fā)現(xiàn)可供使用的第三方接口很多,比如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>返回數(shù)據(jù)格式:(json格式的)國家 具壮、省(自治區(qū)或直轄市)哈蝇、市(縣)棺妓、運營商;比如:</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數(shù)據(jù)示例如下圖:

ip數(shù)據(jù)清單
ip數(shù)據(jù)清單

R代碼實現(xiàn)如下:
<pre><code>###ip批量查詢

<p>#設置文件目錄

setwd("A:\\數(shù)據(jù)分析師的成長\\zfancy.R")

library(RCurl) #調(diào)用getURL()函數(shù)<p>
<p>library(RJSONIO) #調(diào)用fromJSON()函數(shù)

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:\\數(shù)據(jù)分析\\用戶基本畫像\\ip數(shù)據(jù).csv",
<p>stringsAsFactors = F,header = T) #導入測試樣本ip

構(gòu)造函數(shù)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]) #接口返回結(jié)果

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) #每次循環(huán)休眠1s

}

return(data.frame(ip=ip,country=cou,province=pro,city=cit))#匯總結(jié)果
}

<p>#定義結(jié)果輸出列表

MM <- list()

n <- ceiling(nrow(Ip_yb)/100)-1 #將原樣本等分炮赦,除最后一份外怜跑,每份均含100個觀測值

pb <- txtProgressBar(min = 0, max = n, style = 3) #設置循環(huán)進度條

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) #每次循環(huán)休眠1.35s,防止連接中斷

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

MM <- fanxi(Ip_yb)

result <- do.call(rbind,MM)
<p>#導出數(shù)據(jù)

setwd("A:\\數(shù)據(jù)分析\\匹配結(jié)果")

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

匹配結(jié)果
匹配結(jié)果

總結(jié):30萬的數(shù)據(jù)匹配下來總計耗時15h左右性芬;for循環(huán)的執(zhí)行效率實在是慢跋靠簟;希望能幫助到有需要的人植锉;也懇請路過高人指點一二//

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辫樱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子俊庇,更是在濱河造成了極大的恐慌狮暑,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辉饱,死亡現(xiàn)場離奇詭異心例,居然都是意外死亡,警方通過查閱死者的電腦和手機鞋囊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門止后,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人溜腐,你說我怎么就攤上這事译株。” “怎么了挺益?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵歉糜,是天一觀的道長。 經(jīng)常有香客問我望众,道長匪补,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任烂翰,我火速辦了婚禮夯缺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甘耿。我一直安慰自己踊兜,他們只是感情好,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布佳恬。 她就那樣靜靜地躺著捏境,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毁葱。 梳的紋絲不亂的頭發(fā)上垫言,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音倾剿,去河邊找鬼筷频。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的截驮。 我是一名探鬼主播笑陈,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼葵袭!你這毒婦竟也來了涵妥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤坡锡,失蹤者是張志新(化名)和其女友劉穎蓬网,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹉勒,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡帆锋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了禽额。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锯厢。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖脯倒,靈堂內(nèi)的尸體忽然破棺而出实辑,到底是詐尸還是另有隱情,我是刑警寧澤藻丢,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布剪撬,位于F島的核電站,受9級特大地震影響悠反,放射性物質(zhì)發(fā)生泄漏残黑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一斋否、第九天 我趴在偏房一處隱蔽的房頂上張望梨水。 院中可真熱鬧,春花似錦如叼、人聲如沸冰木。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至歇终,卻和暖如春社证,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背评凝。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工追葡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓宜肉,卻偏偏與公主長得像匀钧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谬返,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容