此文中的API将台湾列为国家,非本人立场,台湾属于中国,台湾岛生活的人不一定!

上码:

#!/usr/bin/python
#coding=utf-8 '''
http://ip-api.com/json/ip
''' import plotly
import plotly.plotly
import plotly.graph_objs as abcc
import plotly.plotly class Piecharts:
def __init__(self):
print "饼图生成中" def makePiecharts(self,labels,values,filename):
trace = abcc.Pie(labels = labels,values= values)
plotly.offline.plot([trace],filename=filename) import requests
import sys try:
iplist = sys.argv[1]
except:
print "IP list not given or some other error!"
countrylist = {}
regionlist = {}
citylist = {} with open(iplist) as f:
for ip in f.readlines():
if ip.strip() != '':
url = 'http://ip-api.com/json/' + ip.strip()
try:
result = requests.get(url)
jsontext = result.json()
except:
print "Error: Data not retrieved!"
continue
status = jsontext['status']
if status == 'fail':
print "%s failed!" % ip.strip()
continue
mline = jsontext['as']
city = jsontext['city']
country = jsontext['country']
countryCode = jsontext['countryCode']
isp = jsontext['isp']
lat = jsontext['lat']
lon = jsontext['lon']
org = jsontext['org']
query = jsontext['query']
region = jsontext['region']
regionName = jsontext['regionName']
timezone = jsontext['timezone']
zipcode = jsontext['zip'] if not country in countrylist:
countrylist[country] = 0
else:
countrylist[country] += 1 if not regionName in regionlist:
regionlist[regionName] = 0
else:
regionlist[regionName] += 1 if not city in citylist:
citylist[city] = 0
else:
citylist[city] += 1
try:
print ip.strip() + '--' + country + '--' + regionName
except:
print "Special character!"
print countrylist #country
labels = [i for i in countrylist]
value = [countrylist[i] for i in countrylist]
drive = Piecharts()
drive.makePiecharts(labels,value,"country.html") #region
labels = [i for i in regionlist]
value = [regionlist[i] for i in regionlist]
drive = Piecharts()
drive.makePiecharts(labels,value,"region.html") #city
labels = [i for i in citylist]
value = [citylist[i] for i in citylist]
drive = Piecharts()
drive.makePiecharts(labels,value,"city.html")

gevent协程并发版

#!/usr/bin/python
# coding=utf-8 '''
http://ip-api.com/json/ip
''' import plotly
import plotly.graph_objs as abcc
import plotly.plotly class Piecharts:
def __init__(self):
print u'饼图生成中' def makePiecharts(self, labels, values, filename):
trace = abcc.Pie(labels=labels, values=values)
plotly.offline.plot([trace], filename=filename) import requests
import sys try:
iplist = sys.argv[1]
except:
print "IP list not given or some other error!"
countrylist = {}
regionlist = {}
citylist = {} def locater(url):
try:
result = requests.get(url)
jsontext = result.json()
except:
print "Error: Data not retrieved!"
return
status = jsontext['status']
if status == 'fail':
print "%s failed!" % ip.strip()
return
mline = jsontext['as']
city = jsontext['city']
country = jsontext['country']
countryCode = jsontext['countryCode']
isp = jsontext['isp']
lat = jsontext['lat']
lon = jsontext['lon']
org = jsontext['org']
query = jsontext['query']
region = jsontext['region']
regionName = jsontext['regionName']
timezone = jsontext['timezone']
zipcode = jsontext['zip'] if not country in countrylist:
countrylist[country] = 0
else:
countrylist[country] += 1 if not regionName in regionlist:
regionlist[regionName] = 0
else:
regionlist[regionName] += 1 if not city in citylist:
citylist[city] = 0
else:
citylist[city] += 1
try:
print ip.strip() + '--' + country + '--' + regionName
except:
print "Special character!" from gevent import monkey
monkey.patch_socket()
from gevent import pool
import gevent pool = pool.Pool(40)
glist = []
with open(iplist) as f:
for ip in f.readlines():
if ip.strip() != '':
url = 'http://ip-api.com/json/' + ip.strip()
glist.append(pool.spawn(locater, url))
gevent.joinall(glist) # country
labels = [i for i in countrylist]
value = [countrylist[i] for i in countrylist]
drive = Piecharts()
drive.makePiecharts(labels, value, "country.html") # region
labels = [i for i in regionlist]
value = [regionlist[i] for i in regionlist]
drive = Piecharts()
drive.makePiecharts(labels, value, "region.html") # city
labels = [i for i in citylist]
value = [citylist[i] for i in citylist]
drive = Piecharts()
drive.makePiecharts(labels, value, "city.html")

饼图效果:

最新文章

  1. Demo 版
  2. F#之旅4 - 小实践之快排
  3. Android进程管理及静态变量垃圾回收
  4. Eclipse 最全快捷键
  5. 15个最好的PDF转word的在线转换器,将PDF文件转换成doc文件
  6. Android QQ空间浏览图片动画特效的实现(※)
  7. iOS7上TableViewCell的button和UIImageView个别未显示的bug
  8. iwpriv
  9. js金额转换大写
  10. 每次都觉得很神奇的JS
  11. 移植openssh到nuc951 evb板
  12. 转载:Struts2.3.15.1升级总结
  13. HDU 5012 Dice (BFS)
  14. HTML5 简介、浏览器支持、新元素
  15. CSS3 三角形运用
  16. j2e应用概述
  17. celery 和 haystack
  18. wtforms组件使用实例及源码解析
  19. Flask 系列之 部署发布
  20. PY序

热门文章

  1. spring boot(十四)shiro登录认证与权限管理
  2. Xcode下的中文乱码问题
  3. Android Studio build gradle project info 卡主不动解决方法.
  4. 小程序util工具
  5. Ubuntu云服务器下mysql授权远程登陆
  6. 【Crash】C++程序崩溃排查方法
  7. Win10系列:JavaScript综合实例4
  8. node编译C++,比如安装node-gyp失败的问题
  9. UVa 10859 - Placing Lampposts 树形DP 难度: 2
  10. this&super两个关键字的意义和用法