shankailaidian.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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 = '211.159.224.10',
  18. port = 27119,
  19. username = 'service',
  20. password = 'oOzjoQcO5DyyiN97AY0NpzJ6vztjNpx5',
  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 shankailaidianDevice(Searchable):
  34. meta = {
  35. 'collection': 'shankailaidian_device',
  36. 'db_alias': 'spider',
  37. 'unique_together': {'vStationNo'}
  38. }
  39. # 根据二维码编号,获取设备更详细的信息
  40. url1 = 'https://api.issks.com/issksapi/V2/ec/stationList/json.shtml?mapX=%s&mapY=%s'
  41. ii = 0
  42. govs = Goverment.get_collection().find({})
  43. devIdMap = {}
  44. for dev in shankailaidianDevice.get_collection().find({}):
  45. devIdMap[dev['vStationNo']] = 1
  46. cookie1 = 'SECKEY_ABVK=9Evaq2OKVzgoe1gStw9X4D1UBWkr2l7/0NRT+NUeCJM%3D; BMAP_SECKEY=zkVWrAyscY50tP8ct7mfV8gd7WUVrYi84X5_k1PtFRpswZA8LXI2sUKNQ0c8MUI2xqDaQuWJa5VqB3OiOZNn0zokd5VNvfOykp0gHv46O1UvEecnTCvXqGcz8Qu6CZMA6NcAEK-wGEIW8wIV2H1c4-Iq5avaGxXajjaUVgVgm1NvCcAaN9PAaz4276H_pE7d; JSESSIONID=DDA5CAD77862B1B692D5055FD8F4818B; 14a03328ed59437f0a5a7fea4391b872=3b935069ae8453531d5ebb3e151b6cac'
  47. agent = 'Mozilla/5.0 (Linux; Android 7.1.2; HLTE212T Build/N2G47H; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 XWEB/3170 MMWEBSDK/201101 Mobile Safari/537.36 MMWEBID/6505 MicroMessenger/7.0.21.1800(0x2700157F) Process/toolsmp WeChat/arm32 Weixin NetType/WIFI Language/zh_CN ABI/arm64'
  48. refer = 'https://api.issks.com/issksapi/V2/ec/stationList.shtml'
  49. for gov in govs[ii:]:
  50. try:
  51. ii += 1
  52. print gov['province'],gov['city'],gov['name'],ii
  53. if not (u'政府' in gov['name']):
  54. continue
  55. url = url1 % (gov['lng'],gov['lat'])
  56. strhtml = requests.get(url,headers = {'Cookie':cookie1,'User-Agent':agent,'Refer':refer}).text
  57. result = json.loads(strhtml)
  58. if not result.has_key('list'):
  59. continue
  60. for dev in result['list']:
  61. if dev['vStationNo'] in devIdMap:
  62. continue
  63. shankailaidianDevice.get_collection().update({'vStationNo':dev['vStationNo']},{'$set':dev},upsert = True)
  64. devIdMap[dev['vStationNo']] = 1
  65. print 'new one!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
  66. except Exception,e:
  67. print 'eeeeeeeeeeeeeeeeeeeeeee',e
  68. continue
  69. print('OK')