xiaozizhuang_stat.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import os, sys,time,datetime
  4. import urllib
  5. import requests
  6. from mongoengine import register_connection, PointField, DynamicDocument, StringField
  7. import simplejson as json
  8. import urllib, urllib2, sys
  9. import ssl
  10. from django.db.models.fields import DateTimeField
  11. import xlrd
  12. from xlrd import xldate_as_tuple
  13. from collections import OrderedDict
  14. from apps.web.core.utils import generate_excel_report
  15. PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
  16. sys.path.insert(0, PROJECT_ROOT)
  17. os.environ.setdefault("DJANGO_SETTINGS_MODULE", "configs.testing")
  18. from script.base import init_env
  19. init_env(interactive = False)
  20. from apps.web.core.db import Searchable
  21. # 统计U净用户的数据
  22. register_connection(alias = 'spider',
  23. name = 'spider',
  24. host = '116.62.228.194',
  25. port = 27017,
  26. username = 'dba',
  27. password = 'dayuan@2020..',
  28. authentication_source = 'admin')
  29. class xzzDevice(Searchable):
  30. meta = {
  31. 'collection': 'xiaozizhuang',
  32. 'db_alias': 'spider',
  33. 'unique_together': {'qrId'}
  34. }
  35. def get_tel_zone(tel):
  36. if not tel or len(tel) <= 7:
  37. return '',''
  38. tel = tel.replace('-','')
  39. tel = tel.replace(' ','')
  40. host = 'https://api04.aliyun.venuscn.com'
  41. path = '/mobile'
  42. method = 'GET'
  43. appcode = '8296fcd952e34713ba91fbdceb13e915'
  44. querys = 'mobile=%s' % tel
  45. bodys = {}
  46. url = host + path + '?' + querys
  47. try:
  48. request = urllib2.Request(url)
  49. request.add_header('Authorization', 'APPCODE ' + appcode)
  50. ctx = ssl.create_default_context()
  51. ctx.check_hostname = False
  52. ctx.verify_mode = ssl.CERT_NONE
  53. response = urllib2.urlopen(request, timeout = 15, context=ctx)
  54. content = response.read()
  55. if (content):
  56. result = json.loads(content)
  57. if result['msg'] != 'success':
  58. return '', ''
  59. return result['data']['prov'],result['data']['city']
  60. except Exception,e:
  61. return '',''
  62. ownerDict = {}
  63. for shopInfo in xzzDevice.get_collection().find():
  64. if not shopInfo.has_key('phone'):
  65. continue
  66. if ownerDict.has_key(shopInfo['phone']):
  67. ownerDict[shopInfo['phone']] += 1
  68. else:
  69. ownerDict[shopInfo['phone']] = 1
  70. records = []
  71. for mobile,count in ownerDict.items():
  72. zone = get_tel_zone(mobile)
  73. print zone[0],zone[1],mobile,count
  74. dataList = [
  75. (u'省份', zone[0]),
  76. (u'城市', zone[1]),
  77. (u'通讯', mobile),
  78. (u'数量', count),
  79. ]
  80. records.append(OrderedDict(dataList))
  81. generate_excel_report('F:/test2.xlsx', records,False)