python實現(xiàn)查詢IP地址所在地
使方法一、用IP138數(shù)據(jù)庫查詢域名或IP地址對應(yīng)的地理位置。
#-*- coding:gbk -*- import urllib2 import re try: while True: ipaddr = raw_input("Enter IP Or Domain Name:") if ipaddr == "" or ipaddr == 'exit': break else: url = "http://www.ip138.com/ips138.asp?ip=%s&action=2" % ipaddr u = urllib2.urlopen(url) s = u.read() #Get IP Address ip = re.findall(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}',s) print "\n****** Below Result From IP138 Database *****" print "IP Address:",ip[0] #Get IP Address Location result = re.findall(r'(<li>.*?</li>)',s) for i in result: print i[4:-5] print "*"*45 print "\n" except: print "Not Data Find"
方法二、本來想調(diào)用阿里的ip接口查詢ip歸屬地。結(jié)果發(fā)現(xiàn)阿里的接口非常不給力,主要是不準(zhǔn)確,不過是免費的且有地區(qū)和ISP的信息。以下是實現(xiàn)代碼
# -*- coding: utf-8 -*- import requests def checkip(ip): URL = 'http://ip.taobao.com/service/getIpInfo.php' try: r = requests.get(URL, params=ip, timeout=3) except requests.RequestException as e: print(e) else: json_data = r.json() if json_data[u'code'] == 0: print '所在國家: ' + json_data[u'data'][u'country'].encode('utf-8') print '所在地區(qū): ' + json_data[u'data'][u'area'].encode('utf-8') print '所在省份: ' + json_data[u'data'][u'region'].encode('utf-8') print '所在城市: ' + json_data[u'data'][u'city'].encode('utf-8') print '所屬運營商:' + json_data[u'data'][u'isp'].encode('utf-8') else: print '查詢失敗,請稍后再試!' ip={'ip': '202.102.193.68'} checkip(ip)
但是多次查詢發(fā)現(xiàn)ip歸屬地不準(zhǔn)確,于是使用17mon的ip查詢接口。但是17mon分付費和免費的庫接口,我用的免費的測試,接口返回的字段有限,只有國家、省份、城市。代碼如下
# -*- coding: utf-8 -*- import requests def lookup(ip): URL = 'http://freeipapi.17mon.cn/' + ip try: r = requests.get(URL, timeout=3) except requests.RequestException as e: print(e) json_data = r.json() print '所在國家:' + json_data[0].encode('utf-8') print '所在省份:' + json_data[1].encode('utf-8') print '所在城市:' + json_data[2].encode('utf-8') return(ip) ip='202.104.15.102' lookup(ip)
測試也不錯,公司要使用還是選擇購買付費的庫查詢接口吧。
本文部分出自 “老徐的私房菜” 博客,轉(zhuǎn)載請與作者聯(lián)系!
以上所述就是本文的全部內(nèi)容了希望大家能夠喜歡。
相關(guān)文章
關(guān)于numpy中np.nonzero()函數(shù)用法的詳解
下面小編就為大家?guī)硪黄P(guān)于numpy中np.nonzero()函數(shù)用法的詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02以windows service方式運行Python程序的方法
這篇文章主要介紹了以windows service方式運行Python程序的方法,可實現(xiàn)將Python程序變成windows服務(wù)的功能,需要的朋友可以參考下2015-06-06Python super( )函數(shù)用法總結(jié)
今天給大家?guī)淼闹R是關(guān)于Python的相關(guān)知識,文章圍繞著super( )函數(shù)展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06