# -*- coding: UTF-8 -*- ip = '61.158.147.194' import urllib,urllib2,cookielib,sys,cjson reload(sys) sys.setdefaultencoding('utf-8') url = 'http://ip.taobao.com/service/getIpInfo.php?' #定义接口地址,限制10qps headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko' } headers = {'User-agent':'Mozilla/5.0'} #---OK url_args = urllib.urlencode({"ip":ip}) urls = '%s%s' %(url,url_args) req = urllib2.Request(url=urls,headers=headers) #需要添加一个header,否则会提示403forbidden res = urllib2.urlopen(req).read() #返回:aabb00 res_d = cjson.decode(res)['data'] # res_d = json.loads(res,strict=False,encoding='utf-8') print res_d[u'country'],res_d[u'region'],res_d[u'city'],res_d[u'isp'] #返回值:中国 河南省 开封市 联通
设置URL超时:
def IP2Addr(ip): url = 'http://ip.taobao.com/service/getIpInfo.php?' #定义接口地址,限制10qps headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko' } headers = {'User-agent':'Mozilla/5.0'} #---OK url_args = urllib.urlencode({"ip":ip}) urls = '%s%s' %(url,url_args) req = urllib2.Request(url=urls,headers=headers) #需要添加一个header,否则会提示403forbidden try: res = urllib2.urlopen(req,timeout = 0.5) #增加超时时间 res_d = cjson.decode(res.read())['data'] #ipaddr = '%s %s %s %s' %(res_d[u'country'],res_d[u'region'],res_d[u'city'],res_d[u'isp']) ipaddr = '%s %s' %(res_d[u'country'],res_d[u'region']) return ipaddr except urllib2.URLError, e: return 'None'
调用新浪IP查询接口:
ip = '61.158.147.194' import urllib,urllib2,cookielib,sys,cjson reload(sys) sys.setdefaultencoding('utf-8') def IP2Addr(ip): #url = 'http://ip.taobao.com/service/getIpInfo.php?' #定义taobao接口地址,限制10qps url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?' #定义Sina接口地址 headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko' } headers = {'User-agent':'Mozilla/5.0'} #---OK url_args = urllib.urlencode({"format":"json","ip":ip}) urls = '%s%s' %(url,url_args) req = urllib2.Request(url=urls,headers=headers) #需要添加一个header,否则会提示403forbidden try: res = urllib2.urlopen(req,timeout = 0.5) res_d = cjson.decode(res.read()) if res_d['ret'] == 1: ipaddr = '%s %s' %(res_d[u'country'],res_d[u'province']) # print ipaddr else: ipaddr = 'None' return ipaddr except urllib2.URLError, e: return 'None' print IP2Addr(ip)
Python3:
import urllib from urllib import request from urllib import parse from urllib.request import urlopen def IP2Addr(ip): url = 'http://ip.taobao.com/service/getIpInfo.php?' #定义接口地址,限制10qps headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko' } headers = {'User-agent':'Mozilla/5.0'} #---OK url_args = parse.urlencode({"ip":ip}) urls = '%s%s' %(url,url_args) req = request.Request(url=urls,headers=headers) #需要添加一个header,否则会提示403forbidden try: res = urlopen(req,timeout = 0.5) #增加超时时间 res_d = ujson.decode(res.read())['data'] #ipaddr = '%s %s %s %s' %(res_d[u'country'],res_d[u'region'],res_d[u'city'],res_d[u'isp']) if res_d[u'country'] == '中国': ipaddr = '%s省%s' %(res_d[u'region'],res_d[u'city']) else: ipaddr = '%s%s%s' %(res_d[u'country'],res_d[u'region'],res_d[u'city']) except Exception as ee: ipaddr = None return ipaddr m=IP2Addr('23.106.157.126') print(m)