这是在oschina上看到的文章,提到淘宝的ip地址库,有点意思,顺便就用python练手了~~
明眼人都可以看出来,淘宝IP地址库是淘宝的服务(真心不想说这句……),提供了两大服务:
主要的优势(其实没必要说,淘宝这么大的公司还不能信任么?):
不过这个服务也是有限制的,据官方说:
说了这么多的废话(主要是为了凑字数),开始正题,python解析数据!
整个流程分两步:一,构造网址并读取网页数据;二,json解析网页数据。代码如下:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |
|
import urllib, urllib2
| import json
| import sys
| import re
| | | ip = raw_input(r'IP : ')
| ip = str.strip(ip)
| ptn = re.compile(r'(([12][0-9][0-9]|[1-9][0-9]|[1-9])\.){3,3}([12][0-9][0-9]|[1-9][0-9]|[1-9])')
| rel = ptn.match(ip)
| | if rel:
| pass
| else:
| print"IP not valid"
| sys.exit()
| | try:
| urlfp = urllib.urlopen('http://ip.taobao.com/service/getIpInfo.php?ip='+ ip)
| exceptException, e:
| print"Error ", e
| sys.exit()
| | ipdata = urlfp.read()
| urlfp.close()
| | allinfo = json.loads(ipdata)
| | for oneinfo in allinfo:
| if"code"== oneinfo:
| if0== allinfo[oneinfo]:
| print"ip : "+ allinfo["data"]["ip"]
| print"city : "+ allinfo["data"]["country"],
| print allinfo["data"]["region"],
| print allinfo["data"]["city"],
| print"("+ allinfo["data"]["isp"]+")"
| | else:
| print"parse error"
| sys.exit() |
|
转载于:https://blog.51cto.com/secure/1220443