行业知识
根据IP查询城市ID和名字
2026-11-13 15:24:09
来源:互联网转载
根据IP查询城市ID和名字
import jsonimport timeimport geoip2.databaseimport requestsfrom loguru import logger#创建GeoIP对象,并指定数据库路径reader = geoip2.database.Reader(r'D:\thb\code\python-trial\pythonProject\data\GeoLite2-City.mmdb')#web addr: https://ip.taobao.com/ipSearch#淘宝 IP 库提供的 Rest 风格接口:10qpsdef query_china_ip_location(ipaddress: str): req_params={ "ip": ipaddress, "accessKey":"alibaba-inc" } cityid=None cityname=None rsp=requests.post(url="http://ip.taobao.com/outGetIpInfo",data=req_params) ''' { "data": { "area": "", "country": "中国", "isp_id": "100017", "queryIp": "118.251.69.6", "city": "株洲", "ip": "118.251.69.6", "isp": "电信", "county": "", "region_id": "430000", "area_id": "", "county_id": null, "region": "湖南", "country_id": "CN", "city_id": "430200" }, "msg": "query success", "code": 0 } ''' if rsp.status_code == 200: logger.info("result:{}",rsp.text) data_dict=json.loads(rsp.text) if data_dict.get("data") is not None: cityid = data_dict.get("data").get("city_id") cityname = data_dict.get("data").get("city") return cityid,cityname#基于maxmind的IP查询,适合于国外IPdef query_ip_location(ip): try: # 查询IP归宿地 response = reader.city(ip) # 提取国家名称 country = response.country.name # 提取城市信息,如果存在的话 city = response.city.name if city: return f"{country} | {city}" else: return country except geoip2.errors.AddressNotFoundError: return "IP地址未找到"if __name__ == "__main__": #测试查询 #ip_location = query_ip_location('128.101.101.101') #print(ip_location) ip_addrs=["118.124.102.247","183.222.178.180","117.183.162.183","118.251.69.6"] for ip_address in ip_addrs: time.sleep(1) cityid,cityname=query_china_ip_location(ip_address) logger.info("cityid:{},cityname:{}",cityid,cityname)
上一篇:服务器申请需求报告怎么填?
下一篇:饥荒怎么租云服务器呢?