背景:端午节假期的时候参加了学校的数学建模比赛,题目是关于共享单车的供需匹配问题,需要获得共享单车的数量和时空分布情况。
在苦苦找寻数据无果的情况下决定自己用爬虫对天津地区的mobike进行统计。
在网上找到了这篇爬虫的代码,本着少造轮子的基本原则,我选择了这个代码进行统计,这里记录一下历程,方便日后查阅。
先上原作者github地址:git clone https://github.com/derekhe/mobike-crawler。python3环境,爬取的是微信小程序,之前是可以爬手机客户端的,不过随着客户端完善变得难爬,小程序的爬取
能用到什么时候要也不确定。
我会把我的一些代码和数据放到百度云里,链接在文末,有需要的小伙伴可以自取。
一、数据之初探
首先确定了要爬取微信小程序的时候,先需要确定一个大概的方向,下载fiddler,对微信小程序进行抓包处理,这一步进展比较顺利。不太了解这一步的可以搜索手机APP抓包相关的知识,这里不再赘述。
比较容易的发现在请求页面需要post你的经纬度坐标给https://mwx.mobike.com/mobike-api/rent/nearbyBikesInfo.do这个网页,然后返回周围的车的信息,包括
bikeID,distX,distY,distance等信息,比较方便的是这些信息都放在了json文件中。而我们关系的只是车的位置和距离即distX,distY,distance。
注意点是要把浏览器头部伪装成手机浏览器。
z.json()['object']即可。
import requests
headers={'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Mobile/14E304 MicroMessenger/6.5.7 NetType/WIFI Language/zh_CN','Content-Type': 'application/x-www-form-urlencoded','Referer': 'https://servicewechat.com/wx80f809371ae33eda/23/page-frame.html',
}
url= 'https://mwx.mobike.com/mobike-api/rent