- def fetch(ip):
- url = 'http://ip.taobao.com/service/getIpInfo.php?ip=' + ip
- result = []
- try:
- response = urllib.urlopen(url).read()
- jsondata = json.loads(response)
- if jsondata[u'code'] == 0:
- result.append(jsondata[u'data'][u'ip'].encode('utf-8'))
- result.append(jsondata[u'data'][u'country'].encode('utf-8'))
- result.append(jsondata[u'data'][u'country_id'].encode('utf-8'))
- result.append(jsondata[u'data'][u'area'].encode('utf-8'))
- result.append(jsondata[u'data'][u'area_id'].encode('utf-8'))
- result.append(jsondata[u'data'][u'region'].encode('utf-8'))
- result.append(jsondata[u'data'][u'region_id'].encode('utf-8'))
- result.append(jsondata[u'data'][u'city'].encode('utf-8'))
- result.append(jsondata[u'data'][u'city_id'].encode('utf-8'))
- result.append(jsondata[u'data'][u'county'].encode('utf-8'))
- result.append(jsondata[u'data'][u'county_id'].encode('utf-8'))
- result.append(jsondata[u'data'][u'isp'].encode('utf-8'))
- result.append(jsondata[u'data'][u'isp_id'].encode('utf-8'))
- else:
- return 0, result
- except:
- logging.exception("Url open failed:" + url)
- return 0, result
- return 1, result
- def worker(ratelimit, jobs, results, progress):
- global cancel
- while not cancel:
- try:
- ratelimit.ratecontrol()
- ip = jobs.get(timeout=2) # Wait 2 seconds
- ok, result = fetch(ip)
- if not ok:
- logging.error("Fetch information failed, ip:{}".format(ip))
- progress.put("") # Notify the progress even it failed
- elif result is not None:
- results.put(" ".join(result))
- jobs.task_done() # Notify one item
- except Queue.Empty:
- pass
- except:
- logging.exception("Unknown Error!")
来源: http://www.phpxs.com/code/1009294/