六.通过接口统计张江的小鸣单车数量

一.看看张江的地图

张江地图呈现梯形,并且多出一块正方向

二.安装小鸣单车APP,后fiddler抓包

小鸣单车APP抓包可以看到每次定位是截取接口https://api.mingbikes.com/common/terminal/get_near_bike,可以看到POST参数是经纬度,返回的信息都是单车的型号,SN编码,还有经纬度

{u'status': u'1', u'msg': u'\u6210\u529f', u'data': {u'bikes': [{u'latitude': u'31.181001', u'longitude': u'121.58025', u'bike_sn': u'1000017899', u'bike_id': u'4356'}, {u'latitude': u'31.180607', u'longitude': u'121.582111', u'bike_sn': u'2101200620', u'bike_id': u'316873'}, {u'latitude': u'31.18311947611552', u'longitude': u'121.5814279784648', u'bike_sn': u'2103102333', u'bike_id': u'395654'}, {u'latitude': u'31.18129', u'longitude': u'121.57381', u'bike_sn': u'2100847510', u'bike_id': u'302410'}, {u'latitude': u'31.181763', u'longitude': u'121.572805', u'bike_sn': u'2100848768', u'bike_id': u'298921'}, {u'latitude': u'31.181298', u'longitude': u'121.572423', u'bike_sn': u'2000109691', u'bike_id': u'15008'}, {u'latitude': u'31.183074', u'longitude': u'121.573072', u'bike_sn': u'2102803146', u'bike_id': u'387096'}, {u'latitude': u'31.181262', u'longitude': u'121.572167', u'bike_sn': u'2101302440', u'bike_id': u'316990'}, {u'latitude': u'31.18092', u'longitude': u'121.571743', u'bike_sn': u'1000018622', u'bike_id': u'4543'}, {u'latitude': u'31.178679', u'longitude': u'121.571319', u'bike_sn': u'2000110073', u'bike_id': u'15442'}, {u'latitude': u'31.178668', u'longitude': u'121.571289', u'bike_sn': u'2000110042', u'bike_id': u'15443'}, {u'latitude': u'31.178771', u'longitude': u'121.571087', u'bike_sn': u'2100845764', u'bike_id': u'302012'}, {u'latitude': u'31.181516', u'longitude': u'121.588913', u'bike_sn': u'2101023631', u'bike_id': u'312436'}, {u'latitude': u'31.178679', u'longitude': u'121.57103', u'bike_sn': u'2103104452', u'bike_id': u'403499'}, {u'latitude': u'31.18739', u'longitude': u'121.577086', u'bike_sn': u'2100842181', u'bike_id': u'276222'}, {u'latitude': u'31.18580017558126', u'longitude': u'121.5861086522036', u'bike_sn': u'2100846928', u'bike_id': u'300669'}, {u'latitude': u'31.18750520815055', u'longitude': u'121.5825172378984', u'bike_sn': u'2101803230', u'bike_id': u'346825'}, {u'latitude': u'31.187837', u'longitude': u'121.579605', u'bike_sn': u'2100846788', u'bike_id': u'307137'}, {u'latitude': u'31.17906567085478', u'longitude': u'121.5708964258898', u'bike_sn': u'2103102811', u'bike_id': 


三.分析

1.看定位区间
以固定经纬度(121.6391396448037,31.202418271030086)参数看分布图,maplib画散点图

获取每次定位的最大经纬度间距分别为0.0136566861456,0.010266
百度一下——中国区域地图纬度相差1度大概实际距离是111公里,经度相差1度大概是85.39公里
计算出的app定位间距是1km,0.85km,和实际APP定位区间相比是符合的,说明理论是正确的
此时策略,类型梯形图,x轴每隔0.01取点,y轴每隔0.085取点,目标能让点遍历张江地图
抓取数据自动去重存到数据库,

2.定位梯形的四角经纬度,初步实现简单的计算,(多出的小正方型)暂时忽略

mongodb默认_id为主键,把单车SN变成_id用于自动去重

#coding=utf-8
import requests,json
import pymongo,re,time
from numpy import arange
#小鸣单车
def run(x,y,table):
    url='https://api.mingbikes.com/common/terminal/get_near_bike'
    headers={'Accept-Encoding': 'gzip',
         'User-Agent': 'Android/4.4.2 (HUAWEI/hwPE), com.xiaoming.bike/1.4.0',
         'Connection': 'Keep-Alive',
         'Host': 'api.mingbikes.com',
         'Device-UUID': 'ede5aa89-9a8b-4637-8b91-23359ebdab1e',
         'Channel': '1007',
         'Content-Type': 'application/x-www-form-urlencoded',
         'Content-Length': '45'}
    data={'lat':x,'lng':y}
    rq=requests.post(url=url,headers=headers,data=data,timeout=10)
    js=json.loads(rq.text)
    if js['msg']==u'成功':
        print 'Ok'
        for i in js['data']['bikes']:
            i['_id']=i['bike_sn']
            del i['bike_sn']
            table.save(i)
cn=pymongo.MongoClient('127.0.0.1',27017)
db=cn.ofo
table=db.ofotable
for i in arange(121.58,121.64,0.01):
    for j in arange(31.18,31.23,0.0085):
        run(j,i,table)
        time.sleep(2)
3.查看数据库

利用百度key的接口获取经纬度的对应地址位置

http://api.map.baidu.com/geocoder/v2/?output=json&ak=申请的百度key&location=纬度,经度
误差点:1.取点问题如何科学计数,2.百度的api定位是有偏差的,
4.结论


数据库大概得出结论,张江大概有1500辆小鸣单车

5.思考

1.已经得到了一堆附近的单车SN,可不可以通过接口直接post SN来占用附近的单车验证码,或者是所有单车的验证码。
2.利用这种方法同样可以获取上海的投放量
3.可不可以利用单车SN的经纬度数据是否变动,判断车的位置变动,来判断某一地区一天的收益情况。(张江1500量单车的数据,不到2min获取完)
4.接口太简单,没加密不安全。mobai,ofo都是有加密字段。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值