scrapy爬虫爬取美团美食商家信息
2017-10-06 本文已影响1327人
L同学_
本文主要思路是根据手机定位信息周边美食进行爬取:
爬取目标:微信小程序中的美团生活
![](https://img.haomeiwen.com/i6926359/16c87293723820e8.jpg)
1、首先需要获取广州市地图边界。
1)获取地图边界主要是依赖高德地图api接口,需要自行申请key
介绍地址:http://lbs.amap.com/api/webservice/guide/api/district/
![](https://img.haomeiwen.com/i6926359/780891addfe49da7.png)
2)使用matplotlib进行绘制结果如图,测试没问题:
![](https://img.haomeiwen.com/i6926359/8fbefe887dcb16cc.png)
2、构造外包矩形,对外包矩形进行等距划分。
1)美团定位显示3km内的商家,所以任意相邻的两个点之间的距离应该小于6km,其实就是一个正方形对角线的距离必须小于或等于6,即 2x^2=36,解得x=4.24264
![](https://img.haomeiwen.com/i6926359/d2ce36f639617e89.png)
2)因为纬度1°为111.3195km,经度每度为111.3195cos(纬度),根据经纬度最大和最小点按照4.24264km的距离进行遍历,得到以下所有点(900个)
![](https://img.haomeiwen.com/i6926359/7b142ff716f1cc17.png)
3、筛选出落在广州市内的坐标,并将坐标信息发送到spider
1)原本是打算写个射线法进行筛选坐标的,后面想起好像有类似的轮子,于是使用了shapely进行坐标筛选出401个符合要求的点,感谢造轮子的大神
![](https://img.haomeiwen.com/i6926359/04bb6e5729c50a48.png)
2)将以上功能定义成函数式,并在spider中改写start_requests,将坐标遍历
![](https://img.haomeiwen.com/i6926359/35d52921a5fef6cc.png)
4、对所有符合要求的坐标信息进行遍历爬取,主要是获取商家的poiid
![](https://img.haomeiwen.com/i6926359/895e48c1294b34ba.png)
5、根据卖家的poiid,对美团app的商家信息进行爬取,包含坐标信息
![](https://img.haomeiwen.com/i6926359/66c3c2a9061cc6ae.png)
6、数据入库
最后抓取了6378条商家信息
![](https://img.haomeiwen.com/i6926359/02003ea088f5366e.png)
7、注意事项
1)数据库插入报错: Traceback:: (1241, 'Operand should contain 1 column(s)')
输出数据中的坐标为tuple格式,改成str解决
2)因为坐标为经纬度,有6位小数点,浮点型计算不太熟悉,所以开始处理的时候转换成了int
![](https://img.haomeiwen.com/i6926359/8e3f12ab2d02d063.png)
3)美团接口获取主要是使用Fiddler
8、数据展示
1)人均消费最高的商家,香格里拉大酒店占了4个
![](https://img.haomeiwen.com/i6926359/f84ab57f425461ae.png)
2)最受欢迎的前十商家,你去过几家?
![](https://img.haomeiwen.com/i6926359/32a2907c11e5feec.png)
3)商家人均价格分布,多少钱才符合大众消费?
![](https://img.haomeiwen.com/i6926359/4f4a61b6815cc192.png)
4)根据坐标绘制的散点图,哪里开店最受欢迎?
![](https://img.haomeiwen.com/i6926359/d9f27d3f5bfe0c32.png)
5)词频统计,广州什么美食店最多?
![](https://img.haomeiwen.com/i6926359/e4ed8b302e90cb63.png)
github地址:https://github.com/GuoBinxs/MeituanSpider 欢迎start