yunyichongExport.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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. register_connection(alias = 'spider',
  22. name = 'spider',
  23. host = '116.62.228.194',
  24. port = 27017,
  25. username = 'dba',
  26. password = 'dayuan@2020..',
  27. authentication_source = 'admin')
  28. class yunyichongDevice(Searchable):
  29. uuid = StringField(default = '')
  30. meta = {
  31. 'collection': 'yunyichong_device',
  32. 'db_alias': 'spider',
  33. 'unique_together': {'uuid'}
  34. }
  35. # 先把所有的设备二维码编号爬下来
  36. # page=0
  37. # while True:
  38. # url = 'https://trade.api3.sdaascloud.com/trade/nearbyChargers?key=&page=%s&size=10&latitude=30.48029&longitude=114.42073&raidus=3000000000' % page
  39. # strhtml = requests.get(url,timeout = 15).text
  40. # result = json.loads(strhtml)
  41. # if result.has_key('data') and result['data'].has_key('content') and len(result['data']['content']) == 0:
  42. # break
  43. # for dev in result['data']['content']:
  44. # xzzDevice.get_collection().update({'qrId':dev['qrId']},{'$set':dev},upsert = True)
  45. # page += 1
  46. # 根据二维码编号,获取设备更详细的信息
  47. def get_tel_zone(tel):
  48. if not tel or len(tel) <= 7:
  49. return '',''
  50. tel = tel.replace('-','')
  51. tel = tel.replace(' ','')
  52. print tel
  53. host = 'https://api04.aliyun.venuscn.com'
  54. path = '/mobile'
  55. method = 'GET'
  56. appcode = '8296fcd952e34713ba91fbdceb13e915'
  57. querys = 'mobile=%s' % tel
  58. bodys = {}
  59. url = host + path + '?' + querys
  60. try:
  61. request = urllib2.Request(url)
  62. request.add_header('Authorization', 'APPCODE ' + appcode)
  63. ctx = ssl.create_default_context()
  64. ctx.check_hostname = False
  65. ctx.verify_mode = ssl.CERT_NONE
  66. response = urllib2.urlopen(request, timeout = 15, context=ctx)
  67. content = response.read()
  68. if (content):
  69. result = json.loads(content)
  70. if result['msg'] != 'success':
  71. return '', ''
  72. return result['data']['prov'],result['data']['city']
  73. except Exception,e:
  74. return '',''
  75. ownerDict = {}
  76. for shopInfo in yunyichongDevice.get_collection().find():
  77. if not shopInfo.has_key('tel'):
  78. continue
  79. if ownerDict.has_key(shopInfo['tel']):
  80. ownerDict[shopInfo['tel']] += 1
  81. else:
  82. ownerDict[shopInfo['tel']] = 1
  83. records = []
  84. for mobile,count in ownerDict.items():
  85. zone = get_tel_zone(mobile)
  86. print zone[0],zone[1],mobile,count
  87. # city,contact = '',''
  88. # tempList = shop.split(' ')
  89. # if len(tempList) > 2:
  90. # city,contact = tempList[0],tempList[1]
  91. dataList = [
  92. (u'省份', zone[0]),
  93. (u'市', zone[1]),
  94. (u'通讯', mobile),
  95. (u'数量', count),
  96. ]
  97. records.append(OrderedDict(dataList))
  98. generate_excel_report('F:/test9.xlsx', records,False)
  99. print('OK')