想吃火锅不知道怎么选,我用python熬肝一晚抓取全国火锅店做top10分析
目录
- 前言
-
- 1、数据溯源
-
- 1.1 打开地图搜索,可以看到地图上能展示很多店铺数据,那么数据从哪里来的呢?
- 1.2 网络助手调试
- 2、编写爬虫程序
-
- 2.1 导入相关库
- 2.2 请求数据
- 2.3以下为店铺部分数据
- 3、数据存放到表格
- 4、数据分析
- 5、湖南火锅店数量分布
- 6、全国火锅店数量分布
- 总结
前言 对象是川蜀人,比较喜欢吃火锅,每次都在为选择网红店而发愁,因此我用python爬虫花了一晚的时间抓取市内所有的店铺做可视化分析
需求: 抓取市内火锅店数量情况,并将这些数据进行可视化展示,以更加直观的方式去浏览省内不同城市火锅店分布情况
本文数据来自于某度地图,通过python技术知识去获取数据并进行可视化
注: 本文内容仅作为编程技术学习讨论,相关代码和数据不可用于商业用途,否则后果自负。
1、数据溯源 1.1 打开地图搜索,可以看到地图上能展示很多店铺数据,那么数据从哪里来的呢?
文章图片
1.2 网络助手调试
打开网络调试助手,可以看到这里面就有对应店铺的数据,数据的传输都是通过这个API来交互的,可以通过爬虫请求这个接口获取需要的数据
**注:**关于网络调试助手的使用,点击蓝色字体即可拿到相关资料
文章图片
2、编写爬虫程序 2.1 导入相关库
import requests,openpyxl
from numpy import mean
from pyecharts import options as opts
from pyecharts.charts import Map
2.2 请求数据
下面开始编写请求数据代码(请求时记得带上headers)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0;
Win64;
x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36",
'Referer':'https://map.baidu.com/@12949550.923158279,3712445.9716704674,6.28z',
"Cookie":";
"你的cookie",
}url = "https://ditu.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=direct&pcevaname=pc4.1&qt=s&da_src=https://www.it610.com/article/searchBox.button&wd=%E7%81%AB%E9%94%85%E5%BA%97&c=158&src=0&wd2=&pn=0&sug=0&l=13&b=(12553849.45,3237935.24;
12570777.45,3265551.24)&from=webmap&biz_forward={%22scaler%22:1,%22styles%22:%22pl%22}&sug_forward=&auth=P65Ox7I43B3Ta0COBJTb5D4NVW9RBQ9TuxLETRBxBLLty9iRyki%3DxXwvYgP1PcGCgYvjPuVtvYgPMGvgWv%40uVtvYgPPxRYuVtvYgP%40vYZcvWPCuVtvYgP%40ZPcPPuVtvYgPhPPyheuVtvhgMuxVVtcvY1SGpuTtGKD%3DCCGYuxtE20w5V198P8J9v7u1cv3uxt2dd9dv7uPWv3Guxt58Jv7uPYIUvhgMZSguxzBEHLNRTVtcEWe1aDYyuVt%40ZPuzteL1wWveuxtf0wd0vyMFUSCy7OAupt66FKEu%3D%3D8xX&seckey=vHBTJ4tdi68MW8qWw%2BjU2KFSTFNFo3ItXO6ack3ti8w%3D%2CAp6F2yrR-L11fgqtb_BCcR__vsbaezgdq3dBSEVigT5dYmDiJD8CMaToeS_RfR0pFYByyqzM_Fym7UZvX8dmUA_npbBsJiTpMFwIgVQ5pFQ4nDgupLc5wRg_xqikNzFJMAI55erqBKkbkNQqXfrs9hl6futZVDWgi_jFWBfUDhiNyCGARzZeP0UzmuY9sAJX&device_ratio=1&tn=B_NORMAL_MAP&nn=0&u_loc=12568222,3256533&ie=utf-8&t=1649831407880&newfrom=zhuzhan_webmap"response = requests.get(url,headers=headers).json()
这里的cookie可以在浏览器network中复制即可。
文章图片
通过返回的json数据可知道,我们的目标数据在content中,里面是列表数据是店铺资源(overall_rating是评分,phone是店家电话,price是均价,name是店铺名称)
2.3以下为店铺部分数据
res = session.get(url, headers=headers)
if res.status_code == 200:
items = res.json()
for i in items.get('content')[0:10]:
ext = i.get('ext').get('detail_info')
overall_rating = ext.get('overall_rating')
phone = ext.get('phone')
price = ext.get('price')
name = ext.get('name')
print(overall_rating,phone,price,name)
文章图片
3、数据存放到表格
work = openpyxl.Workbook()
ws = work.create_sheet(title='省数据', index=0)
ws.append(['评分', '联系方式', '价格', '店名'])
文章图片
4、数据分析 根据值评分进行排行统计TOP10店铺
文章图片
5、湖南火锅店数量分布 为了绘制城市的分布图,选择了湖南省为例进行绘制(如果要绘制全国的所有城市,那样出来的图密密麻麻,不美观)
c2 = (
Map()
.add(f"湖南{wd}店数量各市统计", bb, "湖南")
.set_global_opts(
title_opts=opts.TitleOpts(title=f"湖南{wd}店数量分布"), visualmap_opts=opts.VisualMapOpts()
)
.render(f"湖南{wd}店数量分布.html")
)
return c1,c2
文章图片
6、全国火锅店数量分布 u
attr = data['省份'].tolist()
value = https://www.it610.com/article/data['数量'].tolist()
name = []
for i in attr:
if "省" in i:
name.append(i.replace("省",""))
else:
name.append(i)
from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker
c = (
Map()
.add("数量", [list(z) for z in zip(name, value)], "china")
.set_global_opts(title_opts=opts.TitleOpts(title="全国火锅店数量分布情况"))
.render("全国火锅店数量分布情况.html")
)
【Python实战项目|Python技术知识获取数据并进行可视化(已火锅店为例)】
文章图片
总结 灵感来源于生活,所以说没有对象的赶紧去找一个,这样才能刺激到你们,从而拓展自己的思维逻辑,面向更多的技术难点。
↓ ↓ ↓ ↓ 看更牛滴技术还有拿更多的源码 ↓ ↓ ↓ ↓
推荐阅读
- Python知识点系列详解|Python网站开发必备-django模板自定义标签
- 宝藏推荐|容易让人没朋友的python整蛊小程序,纯属娱乐慎用
- Python 读取PDF文件为文本字符并转换为音频
- Python字典常见操作方法 - 增加、删除、修改
- Python字典查找数据的5个操作方法有哪些()
- java|最新版Redis安装配置教程(Windows+Linux)
- SpiderCrawl|js逆向-腾讯滑块collect参数
- SpiderCrawl|js逆向案例-反调试/jsfuck/cookie/des/ttf字体
- Python|Python函数式编程学习(lambda, map, reduce, filter)