方法一:通过http://ip138.com/ips138.asp?ip='+self.ip + '&action=2 来查询
import re
import sys
import urllib.request
class ip138:
def __init__(self,ip):
self.ip = ip
def __open(self):
return urllib.request.urlopen('http://ip138.com/ips138.asp?ip='+self.ip + '&action=2')
def __recompile(self):
return re.compile(r'.*<li>(.*)</li><li>(.*)</li>.*')
def get(self):
p = self.__recompile()
data = self.__open()
for line in data:
line = line.decode('gbk')
if '<ul class="ul1">' in line:
return p.sub(r'\1\n\2',line)
ip= sys.argv[1]
if __name__ == '__main__':
m = ip138(ip)
#m = ip138('74.125.31.188')
if m :
print (" IP ip: %s\n%s" %(ip, m.get()),)
方法二: 通过 http://ip.taobao.com/service/getIpInfo.php?ip=XXX 查询
import urllib
import json
import re
url = "http://ip.taobao.com/service/getIpInfo.php?ip="
def ip_location(ip):
data = urllib.urlopen(url + ip).read()
datadict=json.loads(data)
for oneinfo in datadict:
if "code" == oneinfo:
if datadict[oneinfo] == 0:
return datadict["data"]["country"] + datadict["data"]["region"] + datadict["data"]["city"] + datadict["data"]["isp"]
re_ipaddress = re.compile(r'^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$')
re_domain = re.compile(r'[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?')
file_path = 'D:\ip.txt' # 'D:\ip.txt' 存放要查询的IP文件,位置可改变
fh = open(file_path,'r')
file_object = open(r'D:\thefile.txt', 'w') #D:\thefile.txt 存放查询结果,位置可改变
for line in fh.readlines():
if re_ipaddress.match(line):
city_address = ip_location(line)
print line.strip() + ":" + city_address
file_object.write(line.strip() + ":" + city_address+"\n")
fh.close()
file_object.close()