爬取美团网美食数据,看北京上海都爱吃些啥

640?wx_fmt=gif


640?wx_fmt=jpeg


640?wx_fmt=png

数据爬取三步曲之前方有坑


工作需求需要采集 OTA 网站的美食数据,某个城市的饭店类型情况等。对于老饕来说这不算个事,然而最后的结果是午饭晚饭都没有时间去吃了……情况如下:

640?

Chrome F12 直接定位 get 请求,response 的结果是 json,研究下 get 的参数发现有个奇怪的参数 token:

640?

先不管它,直接修改参数翻页请求数据:

640?


640?wx_fmt=png

数据爬取三步曲之开始填坑


问题来了!纠结半天后发现这个 token 是有时效的,而且是 JS 生成的。这也不是问题,get 请求行不通我们还有 Selenuim。悲催的是美团真的是大厂,直接封杀 Selenuim:

640?


640?wx_fmt=png

数据爬取三步曲之将坑填平


又回到原点——没办法只能从 token 下手了。经过一番查找发现了一个 JS 文件:

640?

因为之前没有用 Python 直接调用 JS,百度一番发现 PyExecJS、PyV8 等都可以。悲催的是我的Python 2.7 安装 PyExecJS 后一直不能正常使用,PyV8 倒是没有问题,只是安装过程太心酸。

640?

我把 JS 文件存放到本地 Python 使用 PyV8 直接解析执行 token 的 JS 事件:

640?

程序自动生成 token,迫不及待接续解析 JSON 数据入库:

640?

640?

测试完成先抓取北京和上海的数据进行数据可视化。

在统计时发现美团还是对数据进行了限制,每个类型的餐饮场所最多显示每页 32 个,一共 32 页,也就是 32*32=1024 个

640?


640?wx_fmt=png

数据可视化


北京、上海美食各类型数量占比情况:

640?

640?

看以看出川湘、烧烤烤肉和西餐在两地的数量占比都是最多的。撸串、麻小果然不分南北。

640?wx_fmt=jpeg

数据中有每家店的评论数量,我们可以从中分析出每一类美食的总评论情况来展示受欢迎情况,因展示效果我们只展示 Top10。

北京、上海市 Top10 美食情况:

640?

640?

北京和上海两地火锅荣登榜首。

下面我们对比下两地同类美食的平均价格的情况:

640?

魔都消费水平已经超过帝都啦。

以上只是个人简单分析不代表权威发布仅供娱乐,欢迎各界朋友交流学习。

作者:Kying,西二旗程序单身汪一枚。从事智慧旅游、数据挖掘。新晋 Python 小白,希望与志同道合者一起煮酒论英雄,数据森麟公众号(ID:shujusenlin)特邀作者。

声明:本文为作者投稿文章,版权归对方所有。



 热 文 推 荐 

☞ Oracle 屠刀下的 Java 软件公司怎么活?

☞ 中国互联网二十四年红黑史

☞ 广播路由算法: 如何优雅地传递悄悄话?

☞ 无业务不技术:那些誓用区块链重塑的行业,发展怎么样了?

☞ 下一次 IT 变革:边缘计算(Edge computing)

☞ 12306 脱库 410 万用户数据究竟从何泄漏?

☞ 年度重磅:《AI聚变:2018年优秀AI应用案例TOP 20》正式发布

☞ 老程序员肺腑忠告:千万别一辈子靠技术生存!

 
  

print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"

640?wx_fmt=gif点击“阅读原文”,打开 CSDN App 阅读更贴心!

640?wx_fmt=png 喜欢就点击“好看”吧!

猜你喜欢

转载自blog.csdn.net/csdnnews/article/details/85604322