youdianchong(dahan).py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. register_connection(alias = 'spider',
  16. name = 'spider',
  17. host = '116.62.228.194',
  18. port = 27017,
  19. username = 'dba',
  20. password = 'dayuan@2020..',
  21. authentication_source = 'admin')
  22. class Goverment(Searchable):
  23. province = StringField(default = "")
  24. city = StringField(default = "")
  25. name = StringField(default = '')
  26. lat = StringField(default = '')
  27. lng = StringField(default = '')
  28. meta = {
  29. 'collection': 'Goverment',
  30. 'db_alias': 'spider',
  31. 'unique_together': {'lat', 'lng'}
  32. }
  33. class youdianchongDevice(Searchable):
  34. meta = {
  35. 'collection': 'youdianchong_device',
  36. 'db_alias': 'spider',
  37. 'unique_together': {'id'}
  38. }
  39. # 根据二维码编号,获取设备更详细的信息
  40. url = 'http://ydc.youdianchong.com:8087/newCloseCharger?longitude=%s&latitude=%s'
  41. govs = Goverment.get_collection().find()
  42. for gov in govs:
  43. try:
  44. print gov['name']
  45. url1 = url % (gov['lng'],gov['lat'])
  46. strhtml = requests.get(url1,headers = {'openId':'ozk7Zv4WC5akrk9Lvrm78jggwHk4'}).text
  47. result = json.loads(strhtml)
  48. if not result.has_key('data'):
  49. continue
  50. if len(result['data'])== 0:
  51. continue
  52. print len(result['data'])
  53. for dev in result['data']:
  54. youdianchongDevice.get_collection().update({'id':dev['id']},{'$set':dev},upsert = True)
  55. except Exception,e:
  56. continue
  57. print('OK')