方式1:通过请求查询接口获取ip归属地,比较慢,因为要一个一个去发送请求。
def ipQuery(ip):
# 淘宝api接口
url = "http://ip.taobao.com/outGetIpInfo?ip={}&accessKey=alibaba-inc".format(ip)
req = requests.get(url).text
json1 = json.loads(req)
print(json1)
country = json1["data"]["country"] # 国
province = json1["data"]["region"] # 省
city = json1["data"]["city"] # 市
return "{}-{}-{}".format(country, province, city)
# ip-api接口
# url = "http://ip-api.com/json/111.121.64.21?lang=zh-CN"
# country = json1["country"] # 国
# province = json1["regionName"] # 省
# city = json1["city"] # 市
# print("{}-{}-{}".format(country, province, city))
# 太平洋api接口
# url = "http://whois.pconline.com.cn/ipJson.jsp?ip=111.121.64.21&json=true"
# province = json1["pro"] # 省
# city = json1["city"] # 市
# print("{}-{}".format(province, city))
ipQuery("8.8.8.8")
方式2:通过第三方库qqwry来请求接口,推荐,速度超快,需要将纯真ip数据库下载到本地。
from qqwry import QQwry
from qqwry import updateQQwry
q = QQwry()
# 自动更新纯真ip数据库
num = updateQQwry('qqwry.dat')
print(num)
# 文件名称
q.load_file('qqwry.dat')
# 获取数据库的版本日期
version = q.get_lastone()
print(version)
# 查询ip归属地
result = q.lookup('1.204.117.217')
print(result)