用户画像之IP批量解析

用户画像之IP批量解析

最近需要从公司的日志数据中抽取用户的ip地址对用户进行地域分析,一开始的思路是循环遍历IP请求淘宝提供的接口(apiurl = “http://ip.taobao.com/service/getIpInfo.php?ip=%s” %ip),但是因为数据量太大(几十万个ip),请求太频繁,会出现请求失败的情况。经过在网上查找资料,发现了python 有一个很强大的IP解析库GeoIP库,能完美的解析出IP地址所在的国家、省、市。

  • 依赖包(建议翻墙下载)
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
gunzip GeoLite2-Country.mmdb.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
gunzip GeoLite2-City.mmdb.gz  # 能解析出IP所在省份
  • 代码示例
import geoip2.database
def parse_ip(ip):
    try:
        reader = geoip2.database.Reader('../tools/GeoLite2-City.mmdb')
        data = reader.city(ip)
        print("IP Address: ", ip)
        print("Country:", data.country.name)  # 获取国家
        print("Subdivisions: ", data.subdivisions.most_specific.name)  # 获取省份
        print("City: ", data.city.name)  # 获取城市
        print("Latitude: ", data.location.latitude)  # 获取经度
        print("Longitude: ", data.location.longitude)  # 获取纬度
    except:
        print(ip,'不存在')

parse_ip('183.30.218.23')
  • 结果如下
IP Address:  183.30.218.23
Country: China
Subdivisions:  Guangdong
City:  Huizhou
Latitude:  23.0833
Longitude:  114.4
  • 将IP批量解析后将省份和对应的人数用pyechart进行可视化(如图):
    在这里插入图片描述

  • geoIP的中国省份与pyechart中国省份映射字典

china_map = {'Beijing':'北京',"Tianjin":'天津','Shanghai':'上海','Chongqing':'重庆','Hebei':'河北','Shanxi':'山西','Liaoning':'辽宁','Jilin':'吉林','Heilongjiang':'黑龙江','Jiangsu':'江苏','Zhejiang':'浙江','Anhui':'安徽','Fujian':'福建','Jiangxi':'江西','Shandong':'山东','Henan':'河南','Hubei':'湖北','Hunan':'湖南','Guangdong':'广东','Hainan':'海南','Sichuan':'四川','Guizhou':'贵州','Yunnan':'云南','Shaanxi':'陕西','Gansu':'甘肃','Qinghai':'青海','Taiwan':'台湾','Inner Mongolia Autonomous Region':'内蒙古','Guangxi':'广西','Tibet':'西藏','Ningxia Hui Autonomous Region':'宁夏','Xinjiang':'新疆','Hong Kong':'香港','Macao':'澳门'}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值