python实现查询IP地址所在地
作者:老徐的私房菜 发布时间:2021-09-08 17:18:43
标签:python,查询IP,所在地
使方法一、用IP138数据库查询域名或IP地址对应的地理位置。
#-*- coding:gbk -*-
import urllib2
import re
try:
while True:
ipaddr = raw_input("Enter IP Or Domain Name:")
if ipaddr == "" or ipaddr == 'exit':
break
else:
url = "http://www.ip138.com/ips138.asp?ip=%s&action=2" % ipaddr
u = urllib2.urlopen(url)
s = u.read()
#Get IP Address
ip = re.findall(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}',s)
print "\n****** Below Result From IP138 Database *****"
print "IP Address:",ip[0]
#Get IP Address Location
result = re.findall(r'(<li>.*?</li>)',s)
for i in result:
print i[4:-5]
print "*"*45
print "\n"
except:
print "Not Data Find"
方法二、本来想调用阿里的ip接口查询ip归属地。结果发现阿里的接口非常不给力,主要是不准确,不过是免费的且有地区和ISP的信息。以下是实现代码
# -*- coding: utf-8 -*-
import requests
def checkip(ip):
URL = 'http://ip.taobao.com/service/getIpInfo.php'
try:
r = requests.get(URL, params=ip, timeout=3)
except requests.RequestException as e:
print(e)
else:
json_data = r.json()
if json_data[u'code'] == 0:
print '所在国家: ' + json_data[u'data'][u'country'].encode('utf-8')
print '所在地区: ' + json_data[u'data'][u'area'].encode('utf-8')
print '所在省份: ' + json_data[u'data'][u'region'].encode('utf-8')
print '所在城市: ' + json_data[u'data'][u'city'].encode('utf-8')
print '所属运营商:' + json_data[u'data'][u'isp'].encode('utf-8')
else:
print '查询失败,请稍后再试!'
ip={'ip': '202.102.193.68'}
checkip(ip)
但是多次查询发现ip归属地不准确,于是使用17mon的ip查询接口。但是17mon分付费和免费的库接口,我用的免费的测试,接口返回的字段有限,只有国家、省份、城市。代码如下
# -*- coding: utf-8 -*-
import requests
def lookup(ip):
URL = 'http://freeipapi.17mon.cn/' + ip
try:
r = requests.get(URL, timeout=3)
except requests.RequestException as e:
print(e)
json_data = r.json()
print '所在国家:' + json_data[0].encode('utf-8')
print '所在省份:' + json_data[1].encode('utf-8')
print '所在城市:' + json_data[2].encode('utf-8')
return(ip)
ip='202.104.15.102'
lookup(ip)
测试也不错,公司要使用还是选择购买付费的库查询接口吧。
本文部分出自 “老徐的私房菜” 博客,转载请与作者联系!
以上所述就是本文的全部内容了希望大家能够喜欢。


猜你喜欢
- 阅读上一章:Chapter 8 再谈清单Chapter 9 精简标签先前我们不断提到结构化内容能够把结构与设计细节分类并精简标签,该怎么做呢
- 你说的就是真正的计数器,它只在有新的用户进入网站时,计数器才会加1,忠实可靠。把下列代码放到的global.asa的sessio
- 如下所示:f = open('./val.txt')lines = f.readlines() #整行读取f.close()
- 好记星不如烂笔头,适时的总结梳理知识让人更轻松愉快。今天总结下学习和开发中遇到的JavaScript执行顺序的问题,今天挖个坑,以后会慢慢填
- 本文主要是利用scapy包编写了一个简易扫描工具,支持ARP、ICMP、TCP、UDP发现扫描,支持TCP SYN、UDP端口扫描,如下:u
- python3.x已经不支持mysqldb了,支持的是pymysql使用pandas读取MySQL数据时,使用sqlalchemy,出现No
- char、varchar、text和nchar、nvarchar、ntext的区别1、CHAR。CHAR存储定长数据很方便,CHAR字段上的
- tuple函数功能和list功能很相似,以序列为参数并把它转换为元组>>> tuple([1,2,3])(1, 2, 3)
- 本文实例讲述了Python实现的求解最大公约数算法。分享给大家供大家参考,具体如下:使用Python求解两个数的最大公约数的时候用到了前面介
- python取对数可以采用两种工具包,math包可对单一数字取对数,numpy可以数列整体取对数。1、仅对单一数字取对数import mat
- 内容导读TorchVision Transforms API 扩展升级,现已支持目标检测、实例及语义分割以及视频类任务。新 API 尚处于测
- 大家在写按钮(input、button)的时候会发现在 IE 下:随着字数的增多,两边的间距也会越来越大。在 WIN 的XP 风格下,当字数
- 1.按姓氏笔画排序:Select * From TableName Order By CustomerName Collate Chines
- 安装软件的时候默认访问sql server账号是sa,Management Studio Express默认是使用Windows身份验证登陆
- 代码如下:<script type=text/javascript src=http://fw.qq.com/ipaddress>
- 阿里云默认yum命令下的MySQL是5.17****,安装mysql5.7之前先卸载以前的版本,包括清除以前的数据库——查看/var/lib
- Windows上安装mysql-8.0.29-winx64,供大家参考,具体内容如下1.进入官网找到自己所需的安装包:https://dev
- 1. A List Apart CSS TopicsA List Apart是一个CSS优秀文章的收集网站,从1999年开始收集文章,关注最
- 使用gorm.Model后无法查询数据Scan error on column index 1, name “created_at”提示:S
- 从物理学的机制出发,波动模型相对于光线模型,显然更加接近光的本质;但是从物理学的发展来说,波动光学旨在解决几何光学无法解决的问题,可谓光线模