haokuaichong2.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. from django.db.models.fields import DateTimeField
  9. PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
  10. sys.path.insert(0, PROJECT_ROOT)
  11. os.environ.setdefault("DJANGO_SETTINGS_MODULE", "configs.testing")
  12. from script.base import init_env
  13. init_env(interactive = False)
  14. from apps.web.core.db import Searchable
  15. from bson import ObjectId
  16. register_connection(alias = 'spider',
  17. name = 'spider',
  18. host = '211.159.224.10',
  19. port = 27119,
  20. username = 'service',
  21. password = 'oOzjoQcO5DyyiN97AY0NpzJ6vztjNpx5',
  22. authentication_source = 'admin')
  23. class Goverment(Searchable):
  24. province = StringField(default = "")
  25. city = StringField(default = "")
  26. name = StringField(default = '')
  27. lat = StringField(default = '')
  28. lng = StringField(default = '')
  29. meta = {
  30. 'collection': 'Goverment',
  31. 'db_alias': 'spider',
  32. 'unique_together': {'lat', 'lng'}
  33. }
  34. class haokuaichongDevice(Searchable):
  35. meta = {
  36. 'collection': 'haokuaichong_device',
  37. 'db_alias': 'spider',
  38. }
  39. class haokuaichongOtherDevice(Searchable):
  40. meta = {
  41. 'collection': 'haokuaichong_other_device',
  42. 'db_alias': 'spider',
  43. }
  44. # 分析公众号
  45. # url = 'http://ap3202.haokuaichong.cn/quickuser50/charge/info?device=%s&port=FF&cmd=0'
  46. # cookie = 'JSESSIONID=8E5A27C36409661680FCADD921EF267A;tgw_l7_route=8601cd2f2bac0d2b07a50c969c168416'
  47. # auth = 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoidXNlciIsImVuY3J5SWQiOiJOakEzTXpNMU1RPT0iLCJpc3MiOiJxdWlja191c2VyXzAwMSIsImlhdCI6MTY0OTQwMDIyNiwiYXVkIjoicXVpY2tfdXNlcl9hcGkiLCJleHAiOjE2NDk0MDM4MjYsIm5iZiI6MTY0OTQwMDIyNn0.C1KXB77mjkhsof01NGFoWM_TdSLeZ3OlWVuIiqLZXAw'
  48. # for ii in range(80,290000): #00,01,02,03
  49. # logicalId = ('%02xE1A704' % ii).upper()
  50. # url1 = url % logicalId
  51. # strhtml = requests.get(url1,headers = {'Cookie':cookie,'Authorization':auth}).text
  52. # result = json.loads(strhtml)
  53. # print result
  54. # if result['msg'] == u'请勿跨公众号使用':
  55. # print '------------------->',logicalId
  56. # 根据二维码编号,获取设备更详细的信息
  57. url = 'http://ap3202.haokuaichong.cn/quickuser50/charge/info?device=%s&port=00&cmd=1'
  58. cookie = 'JSESSIONID=8E5A27C36409661680FCADD921EF267A;tgw_l7_route=8601cd2f2bac0d2b07a50c969c168416'
  59. auth = 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoidXNlciIsImVuY3J5SWQiOiJOak0wT0RVME13PT0iLCJpc3MiOiJxdWlja191c2VyXzAwMSIsImlhdCI6MTY1MTE0MDc0MywiYXVkIjoicXVpY2tfdXNlcl9hcGkiLCJleHAiOjE2NTExNDQzNDMsIm5iZiI6MTY1MTE0MDc0M30.5C4E1fqe-C73SFVIORYBKhUb5pxmNrl-p0ukuT2_Ll8'
  60. devIds = [rcd for rcd in haokuaichongOtherDevice.get_collection().find({'projectId':None})]#,'_id':{'$gt':ObjectId("6253f82e2be18bf0dc979429")}})]
  61. ii = 0
  62. for devIdObj in devIds[5000:]: #7174
  63. devId = devIdObj['deviceId']
  64. ii += 1
  65. if ii % 100 == 0:
  66. print ii,devIdObj['_id']
  67. try:
  68. url1 = url % devId
  69. strhtml = requests.get(url1,headers = {'Cookie':cookie,'Authorization':auth}).text
  70. result = json.loads(strhtml)
  71. if result['code'] == 500 :
  72. continue
  73. if result['code'] == 70004:
  74. print ii, 'token 过期',devIdObj['_id']
  75. break
  76. dev = result['data']
  77. dev['code'] = devId
  78. haokuaichongOtherDevice.get_collection().update({'deviceId':devId},dev,upsert = True)
  79. print ii,'catch new one!!!!'
  80. except Exception,e:
  81. print 'ExceptionExceptionExceptionExceptionException',e
  82. continue
  83. print('OK')