天天看點

python腳本擷取IP地理位置

一、通過淘寶API接口

接口說明:

1. 請求接口(GET):

http://ip.taobao.com/service/getIpInfo.php?ip=[ip位址字串]

2. 響應資訊:

(json格式的)國家 、省(自治區或直轄市)、市(縣)、營運商

3. 傳回資料格式:

{"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的值的含義為,0:成功,1:失敗。

#!/usr/bin/python
#coding:utf-8
import urllib2
import json
ip=raw_input("請輸入要查詢的IP:")
apiurl = "http://ip.taobao.com/service/getIpInfo.php?ip=%s" % ip
content = urllib2.urlopen(apiurl).read()
data = json.loads(content)['data']
code = json.loads(content)['code']
if code == 0:
        print "\nIP: %s Form: %s%s%s ISP: %s\n" % (data['ip'], data['country'], data['region'], data['city'], data['isp'])
else:
        print data      

二、通過ip138

#!/usr/bin/python
#coding:utf-8
import urllib2
import re
p = re.compile(r'.*<li>(.*)</li><li>(.*)</li>.*')
p_ip = re.compile(r'^(?:(?:[1-9]?[0-9]|1[0-9]{2}|2(?:[0-4][0-9]|5[0-5]))\.){3}(?:[1-9]?[0-9]|1[0-9]{2}|2(?:[0-4][0-9]|5[0-5]))$')
ip=raw_input("請輸入要查詢的IP:")
if p_ip.search(ip):
        apiurl = "http://www.ip138.com/ips138.asp?ip=%s" % ip
        content = urllib2.urlopen(apiurl).read()
        ipline=p.search(content).group()
        print  p.sub(r'\1\n\2',ipline).decode('gbk')
else:
        print "Error:請輸入正确的IP"