首页 > 数据库 > 数据库开发技术 > Python批量查询ip定位并绘制城市分布图
点击蓝字关注我们
ip地址定位查询接口介绍
批量查询45万个ip地址定位
利用pyecharts绘制城市分布图
1import requests
2import json
3
4url = 'http://whois.pconline.com.cn/ipJson.jsp'
5ip = '61.235.82.163'
6param = {'ip':ip,
7 'json':'true'
8 }
9ree = requests.get(url, params = param)
10re = json.loads(ree.text.replace("\\"," "))
11print(re)
1{'ip': '61.235.82.163',
2 'pro': '广东省',
3 'proCode': '440000',
4 'city': '广州市',
5 'cityCode': '440100',
6 'region': '天河区',
7 'regionCode': '440106',
8 'addr': '广东省广州市天河区 蓝色心情网吧',
9 'regionNames': '',
10 'err': ''}
1import requests
2import json
3
4url = 'https://restapi.amap.com/v3/ip?parameters'
5ip = '61.235.82.163'
6param = {'key':'你的key值',
7 'ip':ip,
8 'output':'JSON'
9 }
10ree = requests.get(url, params = param)
11re = json.loads(ree.text.replace("\\"," "))
12print(re)
1{'status': '1',
2 'info': 'OK',
3 'infocode': '10000',
4 'province': '广东省',
5 'city': '广州市',
6 'adcode': '440100',
7 'rectangle': '113.1017375,22.93212254;113.6770499,23.3809537'}
多进程下cpu使用情况
1def Get_data(num,data):#获取ip地址定位
2 li = []
3
4 datax = data.iloc[(num-1)*60000:60000*num] #因为一共45万左右数据,按照6万每份进行分割
5 n = len(datax.index)
6
7 for _i in range(n):
8 ip = datax['ip'].iloc[_i]
9 param = {'ip':ip,
10 'json':'true'
11 }
12 try:
13 ree = requests.get(url, params = param)
14 re = json.loads(ree.text.replace("\\"," "))
15 logging.info(f"已经存储{_i+1}个ip及所在地")
16 li.append(re)
17 except json.decoder.JSONDecodeError:
18 logging.info(" param['ip']")
19 continue
20 return li
import multiprocessing 1def main(page,data):#数据导出
2 logging.info('正在获取数据')
3 Li = Get_data(page,data)
4 logging.info('正在导出数据')
5 df = pd.DataFrame(Li)
6 e = r'E:\python\数据处理'
7 path = f'{e}\{page}.xlsx'
8 df.to_excel(path)
9 logging.info('数据计算完成!')
10
11if __name__ == '__main__':
12 logging.info('正在读取原始数据')
13 data = pd.read_excel(r'E:\python\数据处理\每日新增用户.xlsx')
14 logging.info('原始数据读取完成')
15 pool = multiprocessing.Pool()
16 pages = range(1,9)
17 pool.map(partial(main,data=data),pages)
18 pool.close()
19 pool.join()
1import pandas as pd
2from pyecharts import options as opts
3from pyecharts.charts import Map
4
5df = df[['pro','city','ip']]
6df = df.dropna()
7data = pd.pivot_table(df,values='ip',index='city',aggfunc='count').reset_index()
8data['city']=data['city'].apply(lambda x:x.replace("省",'').replace("市",''))
9
10
11c = (
12 Map()
13 .add("注册玩家分布", [list(z) for z in zip(data['city'], data['ip'])], "china-cities",label_opts=opts.LabelOpts(is_show=False))
14 .set_global_opts(
15 title_opts=opts.TitleOpts(title="玩家分布"),
16 visualmap_opts=opts.VisualMapOpts(max_=5000),
17 )
18)
19c.width = '1200px'
20c.height = '900px'
21c.render('玩家城市分布.html')

扫描二维码
关注我们
微信号 :AlphaGame
原文作者:可以叫我才哥;如有侵权,请联系管理员删除。