xcy365Tel.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import os, sys,time,datetime
  4. import urllib, urllib2, sys
  5. import requests
  6. from mongoengine import register_connection, PointField, DynamicDocument, StringField
  7. import simplejson as json
  8. import ssl
  9. import xlrd
  10. from xlrd import xldate_as_tuple
  11. from collections import OrderedDict
  12. PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
  13. sys.path.insert(0, PROJECT_ROOT)
  14. os.environ.setdefault("DJANGO_SETTINGS_MODULE", "configs.testing")
  15. from script.base import init_env
  16. init_env(interactive = False)
  17. from apps.web.core.db import Searchable
  18. from apps.web.core.utils import generate_excel_report
  19. register_connection(alias = 'spider',
  20. name = 'spider',
  21. host = '211.159.224.10',
  22. port = 27119,
  23. username = 'service',
  24. password = 'oOzjoQcO5DyyiN97AY0NpzJ6vztjNpx5',
  25. authentication_source = 'admin')
  26. class xcyDevice(Searchable):
  27. devNo = StringField(default = '')
  28. logicalCode = StringField(default = '')
  29. tel = StringField(default = '')
  30. name = StringField(default = '')
  31. province = StringField(default = '')
  32. city = StringField(default = '')
  33. meta = {
  34. 'collection': 'xcy_device',
  35. 'db_alias': 'spider',
  36. }
  37. def get_tel_zone(tel):
  38. if not tel or len(tel) <= 7:
  39. return '',''
  40. tel = tel.replace('-','')
  41. tel = tel.replace(' ','')
  42. print tel
  43. if tel[0] == '0':
  44. print '',''
  45. host = 'http://aiphone.market.alicloudapi.com'
  46. path = '/ai_mobile_number_belong_to_china/v1'
  47. method = 'GET'
  48. appcode = '8296fcd952e34713ba91fbdceb13e915'
  49. querys = 'MOBILE_NUMBER=%s' % tel
  50. bodys = {}
  51. url = host + path + '?' + querys
  52. try:
  53. request = urllib2.Request(url)
  54. request.add_header('Authorization', 'APPCODE ' + appcode)
  55. request.add_header('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
  56. response = urllib2.urlopen(request)
  57. content = response.read()
  58. if (content):
  59. result = json.loads(content)
  60. return result['ENTITY']['PROVINCE'],result['ENTITY']['CITY']
  61. except Exception,e:
  62. return '',''
  63. records = []
  64. telList = [obj.tel for obj in xcyDevice.objects.all() if obj.province=='' and obj.tel and obj.tel[0] != '0']
  65. telList = list(set(telList))
  66. for tel in telList:
  67. p,c = get_tel_zone(tel)
  68. print p,c,tel
  69. xcyDevice.get_collection().update({'tel':tel},{'$set':{'province':p,'city':c}},multi=True)
  70. for obj in xcyDevice.objects.all():
  71. dataList = [
  72. (u'logialCode', obj.logicalCode),
  73. (u'联系', obj.tel),
  74. (u'名称', obj.name),
  75. (u'省', obj.province),
  76. (u'市', obj.city),
  77. ]
  78. records.append(OrderedDict(dataList))
  79. generate_excel_report('F:/xcy365.xlsx', records,True)
  80. print('OK')