Python 爬虫专栏Python 开发大数据 爬虫Python AI Sql

scrapy爬虫爬取美团美食商家信息

2017-10-06  本文已影响1327人  L同学_

本文主要思路是根据手机定位信息周边美食进行爬取:

爬取目标:微信小程序中的美团生活

1、首先需要获取广州市地图边界。

1)获取地图边界主要是依赖高德地图api接口,需要自行申请key

介绍地址:http://lbs.amap.com/api/webservice/guide/api/district/

2)使用matplotlib进行绘制结果如图,测试没问题:


2、构造外包矩形,对外包矩形进行等距划分。

1)美团定位显示3km内的商家,所以任意相邻的两个点之间的距离应该小于6km,其实就是一个正方形对角线的距离必须小于或等于6,即  2x^2=36,解得x=4.24264

2)因为纬度1°为111.3195km,经度每度为111.3195cos(纬度),根据经纬度最大和最小点按照4.24264km的距离进行遍历,得到以下所有点(900个)

3、筛选出落在广州市内的坐标,并将坐标信息发送到spider

1)原本是打算写个射线法进行筛选坐标的,后面想起好像有类似的轮子,于是使用了shapely进行坐标筛选出401个符合要求的点,感谢造轮子的大神

2)将以上功能定义成函数式,并在spider中改写start_requests,将坐标遍历


4、对所有符合要求的坐标信息进行遍历爬取,主要是获取商家的poiid


5、根据卖家的poiid,对美团app的商家信息进行爬取,包含坐标信息


6、数据入库

最后抓取了6378条商家信息


7、注意事项

1)数据库插入报错: Traceback:: (1241, 'Operand should contain 1 column(s)')

         输出数据中的坐标为tuple格式,改成str解决

2)因为坐标为经纬度,有6位小数点,浮点型计算不太熟悉,所以开始处理的时候转换成了int

3)美团接口获取主要是使用Fiddler

8、数据展示

1)人均消费最高的商家,香格里拉大酒店占了4个

2)最受欢迎的前十商家,你去过几家?

3)商家人均价格分布,多少钱才符合大众消费?

4)根据坐标绘制的散点图,哪里开店最受欢迎?

5)词频统计,广州什么美食店最多?

github地址:https://github.com/GuoBinxs/MeituanSpider  欢迎start

上一篇 下一篇

猜你喜欢

热点阅读