美团外卖作为我们外卖从业人员,是一个很好的平台,从业人员以及相关的数据研究者经常需要从该平台上获取相关数据进行分析,研究竞品销售、分析外卖行业情况等。那么,该平台的数据爬取怎么进行呢?小编今天就进行了尝试。
首先,我们来看一下工作成果:
美团外卖现在已经没有了PC端,而APP端获取数据难度很大,那么我们就选择从相对简单一些的h5端来进行分析。
首先,我们在浏览器打开H5的首页。因为美团系所有平台都需要登录才可以浏览相关数据,所以我们下一步就选择进行登录。
二、然后打开开发者工具,我们现抓包分析:
我们可以发现,数据在这条链接当中:
采用的是POST请求方式,也就是说需要我们提交相应的参数才可以请求到相应的数据。
然后我们再看一下,需要哪些POST表单数据:
发现有一大堆。先不管。先整起来,把当前页的这些数据请求到再说:
三、写代码开始抓取
打开pycharm,开始写代码:什么headers,cookies统统copy过来,然后请求url当中的参数也建立起来,POST请求需要的data序列化,整过来。
然后我们使用requests模块,进行请求。大家应该看到了,这个当中有几个加密的参数:X-FOR-WITH ,_token 等。这些我们先统统不用管。
然后我们运行一下,看看结果:
OK,没有问题,我们可以看到数据请求成功。
好的,那么现在我们已经成功了第一步,下面再看看数据如果提取呢。
我们注意到获取到的是序列化的JSON格式,那么我们就可以对这些规范的数据进行提取了。
我们可以看到这个data当中的startIndex,应该是翻页参数,那么我们就把这个写成动态参数,让其循环起来
打印一下。看看数据:
四、数据有问题,我们一一处理:
OK,数据已经出来了,我们看一下相应的字段都有了,只是好像数字字段都是乱码?
我们回到开发者工具当中,查看,也是如此。所有的数字除1以外,其他都是乱码,这应该就是美团出名的字体替换混淆技术了。
那么我们只能来分析,看是用什么字体文件来进行替换的,我们再想办法替换回来了。
我们搜索一下woff,可以看到这个文件名出现了,那么我们就需要把这个woff下载下来,再分析编码,进行替换。
那么我们就写一下相应的解码即可:
这部分不是本文的重点,感兴趣的可以搜索一下相应的文章。了解如何进行解码。
然后我们再次请求抓取,可以看到,数据已经正常显示了。
不过好像还有问题,就是月售数据,大于100的都被模糊化了,这也和我们在网页上看到的一致。说明美团是将h5端的这部分数据故意模糊的,让我们多使用app,那么既然这样,我们就多用app吧。当然,我们只要进入到详情当中,还是可以统计到某商家具体的销量的。
以上 经过进一步分析,我们还可以进一步更换地址抓取更多。
五、获取商家详情
还是一样,我们先抓取分析,我们点到一个商家,
然后我们可以看到,数据在food这个文件下:
那么,还是一样,把所有的表单数据拿过来,请求。
我们发现,所有的详情都是以wm_poi_id也就是外卖商家的ID来进行请求的。
运行,OK,没有问题,数据正常返回了。下面就是解析数据。
......
OK,我们使用一个商家的ID来测试一下。
打印的结果,字段出来了,没有乱码,菜品、价格、销量、起送、活动内容等,都出来了。
我们再进行一下持久化存储,把解析后的数据保存下来。
商家列表:
外卖信息详情:
好了,总结一下,美团外卖爬虫 - 爬取外卖信息,这个爬虫代码还是有相当的难度的,有很多地方我们新手是解决不了的,比如字体混淆、加密参数等。不过,如果我们只是想要不是大量级的数据,那么我们写一个这么简单的代码进行抓取还是可以的。
我们写好代码以后,为了方便发送给其他同事使用,还可以使用Pyinstaller进行打包,打包成exe,发送给同事,这样就可以脱离python环境使用了。比如这样:
文章原发:https://www.futaike.net/archives/6834.html