当前位置: 首页 > news >正文

天冷就要大口吃肉肉~python采集周边烤肉店数据【附代码】

嗨害大家好鸭~我是小熊猫❤🥩

天冷还是应该吃烤肉大老远跑过去很值得

降温就要吃烤肉啊 滋辣滋辣的声音特别好听~

快乐周六吃烤肉果然是快乐的~ ~~

天冷了,逛街……
天冷了,吃烤肉……
天冷了,喝奶茶……

有温度的冬天,才暖暖的🥩

请添加图片描述
为了造福“烤肉控”们,今天就用Python爬取一座城市的烤肉店数据,选出最适合的一家

准备工作🥩

环境

  • python 3.6
  • pycharm
  • requests >>> 发送请求 pip install requests
  • csv >>> 保存数据

请添加图片描述

了解爬虫最基本的思路🥩

一. 数据来源分析🍖

  1. 确定我们爬取的内容是什么?
    爬取店铺数据
  2. 去找这些东西是从哪里来的
    通过开发者工具进行抓包分析, 分析数据来源

二. 代码实现过程🍖

  1. 发送请求, 对于找到数据包发送请求
  2. 获取数据, 根据服务器给你返回的response数据来的
  3. 解析数据, 提取我们想要的内容数据
  4. 保存数据, 保存到csv文件
  5. 多页爬取, 根据url地址参数变化

代码实现过程🥩

1. 发送请求🍻

url = 'https://平台原因不能放'
data = {
    'uuid': '6e481fe03995425389b9.1630752137.1.0.0',
    'userid': '266252179',
    'limit': '32',
    'offset': 32,
    'cateId': '-1',
    'q': '烤肉',
,
}
# 请求头 都是可以从开发者工具里面直接复制粘贴
# ser-Agent: 浏览器的基本信息
headers = {
    'Referer': 'https://平台原因/',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'
}
# 发送请求
response = requests.get(url=url, params=data, headers=headers)

200 表示请求成功 状态码 403 你没有访问权限

2. 获取数据🍻

print(response.json())

3. 解析数据🍻

result = response.json()['data']['searchResult']
# [] 列表 把里面每个元素都提取出来 for循环遍历
for index in result:
    # pprint.pprint(index)
    # f'{}' 字符串格式化
    index_url = f'https://www.平台原因自己打/meishi/{index["id"]}/'
    # ctrl + D
    dit = {
        '店铺名称': index['title'],
        '店铺评分': index['avgscore'],
        '评论数量': index['comments'],
        '人均消费': index['avgprice'],
        '所在商圈': index['areaname'],
        '店铺类型': index['backCateName'],
        '详情页': index_url,
    }
    csv_writer.writerow(dit)
    print(dit)

4. 保存数据🍻

f = open('烤肉数据.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '店铺名称',
    '店铺评分',
    '评论数量',
    '人均消费',
    '所在商圈',
    '店铺类型',
    '详情页',
])
csv_writer.writeheader() # 写入表头

5.翻页🍻

for page in range(0, 1025, 32):
    url = 'https://平台原因不能放.....group/v4/poi/pcsearch/70'
    data = {
        'uuid': '6e481fe03995425389b9.1630752137.1.0.0',
        'userid': '266252179',
        'limit': '32',
        'offset': page,
        'cateId': '-1',
        'q': '烤肉',
    }

运行代码得到数据🥩

请添加图片描述

请添加图片描述

完整代码🥩

f = open('烤肉数据1.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '店铺名称',
    '店铺评分',
    '评论数量',
    '人均消费',
    '所在商圈',
    '店铺类型',
    '详情页',
])
csv_writer.writeheader() # 写入表头

for page in range(0, 1025, 32):
    url = 'https://平台原因不能放'
    data = {
        'uuid': '6e481fe03995425389b9.1630752137.1.0.0',
        'userid': '266252179',
        'limit': '32',
        'offset': page,
        'cateId': '-1',
        'q': '烤肉',
    }
    headers = {
        'Referer': 'https://chs.平台原因不能放.com/',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'
    }
    # 发送请求
    response = requests.get(url=url, params=data, headers=headers)
    # 200 表示请求成功 状态码 403 你没有访问权限

    result = response.json()['data']['searchResult']
    # [] 列表 把里面每个元素都提取出来 for循环遍历
    for index in result:
        # pprint.pprint(index)
        # f'{}' 字符串格式化
        index_url = f'https://平台原因不能放/meishi/{index["id"]}/'
        # ctrl + D
        dit = {
            '店铺名称': index['title'],
            '店铺评分': index['avgscore'],
            '评论数量': index['comments'],
            '人均消费': index['avgprice'],
            '所在商圈': index['areaname'],
            '店铺类型': index['backCateName'],
            '详情页': index_url,
        }
        csv_writer.writerow(dit)
        print(dit)

终于敲完了…

给我馋得…我等下就下去吃肉嘿嘿~ ~ ~

我是小熊猫,咱下篇文章再见啦(✿◡‿◡)

请添加图片描述

相关文章:

  • 网络地址转换(NAT)(二)
  • 【目标检测】56、目标检测超详细介绍
  • 【PyTorch深度学习项目实战100例】—— 基于RNN实现微博热点新闻分类 | 第27例
  • 05_移动端网页适配
  • Hive数据库操作
  • python 矩阵运算
  • Vue3基础部分
  • 猿创征文 | 国产数据库之神通数据库详解安装和使用
  • STM32中使用PS2手柄
  • 飞翔的小猫-第12届蓝桥杯Scratch省赛2真题第2题
  • 基于粒子群算法的移动机器人路径规划
  • C# 连接 MySQL 数据库
  • 计算机网络物理层
  • 朋友问我,斗破苍穹中到底出现了多少次“恐怖如斯”?
  • 计算机毕业设计SSM选题推荐 企业培训管理系统 艺术类培训中心管理系统 企业销售人员培训系统
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • conda常用的命令
  • Linux中的硬链接与软链接
  • magento 货币换算
  • Mithril.js 入门介绍
  • SpringCloud集成分布式事务LCN (一)
  • 搞机器学习要哪些技能
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 解析 Webpack中import、require、按需加载的执行过程
  • 盘点那些不知名却常用的 Git 操作
  • 最近的计划
  • hi-nginx-1.3.4编译安装
  • NLPIR智能语义技术让大数据挖掘更简单
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 函数计算新功能-----支持C#函数
  • ​queue --- 一个同步的队列类​
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $.ajax()参数及用法
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (差分)胡桃爱原石
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)scrum常见工具列表
  • (转)Windows2003安全设置/维护
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .Net8 Blazor 尝鲜
  • .NET开源快速、强大、免费的电子表格组件
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • /etc/skel 目录作用
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @Autowired自动装配
  • @ConfigurationProperties注解对数据的自动封装
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [android] 请求码和结果码的作用
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现