• 谁还不爱吃肉?现在就教你采集一座城市里的烤肉店数据(附完整代码)


    前言

    嗨嗨,大家好呀,吃饭了吗?吃饭了吗!建议你们先吃饭再看这篇文章哦!
    对于肉食主义者,今天中午我美美的吃了烤肉!就是时间有点赶,没慢慢享受,嘿嘿放图!

    文章代码含 ‘ 平台原因不能打出 ’ 的部分代码被删除了。可以私信找我 ~

    在这里插入图片描述
    再看看以前的!

    在这里插入图片描述
    不知道你们吃烤肉是专挑一家,还是说想尝试不同家的 ~
    我就是后者,但是每次挑选的时候就会有一点点苦恼
    所以为了造福“烤肉控”们,我们今天就用Python爬取一座城市的烤肉店数据,选出最适合的一家烤肉店!

    请添加图片描述

    正文

    文章代码含 ‘ 平台原因不能打出 ’ 的部分代码被删除了。可以私信找我 ~

    准备环境

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

    了解爬虫最基本的思路

    一. 数据来源分析

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

    二. 代码实现过程

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

    代码实现过程

    发送请求

    文章代码含 ‘ 平台原因不能打出 ’ 的部分代码被删除了。可以私信找我 ~

    需要源码、教程,或者是自己有关python不懂的问题,都可以来这里哦 https://jq.qq.com/?_wv=1027&k=9I8fvzhm 这里还有学习资料与免费课程领取

    url = 'mou团'
    data = {
        'uuid': '6e481fe03995425389b9.1630752137.1.0.0',
        'userid': '266252179',
        'limit': '32',
        'offset': 32,
        'cateId': '-1',
        'q': '烤肉',
        '平台原因不能打出',
    }
    # 请求头 都是可以从开发者工具里面直接复制粘贴
    # ser-Agent: 浏览器的基本信息
    headers = {
        'Referer': '某tuan',
        '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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

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

    2.获取数据

    print(response.json())
    
    • 1

    3.解析数据

    result = response.json()['data']['searchResult']
    # [] 列表 把里面每个元素都提取出来 for循环遍历
    for index in result:
        # pprint.pprint(index)
        # f'{}' 字符串格式化
        index_url = f'某tuan'
        # ctrl + D
        dit = {
            '店铺名称': index['title'],
            '店铺评分': index['avgscore'],
            '评论数量': index['comments'],
            '人均消费': index['avgprice'],
            '所在商圈': index['areaname'],
            '店铺类型': index['backCateName'],
            '详情页': index_url,
        }
        csv_writer.writerow(dit)
        print(dit)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    4.解析数据

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

    5.翻页

    for page in range(0, 1025, 32):
        url = '某tuan'
        data = {
            'uuid': '6e481fe03995425389b9.1630752137.1.0.0',
            'userid': '266252179',
            'limit': '32',
            'offset': page,
            'cateId': '-1',
            'q': '烤肉',
            '平台原因不能打出',
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    文章代码含 ‘ 平台原因不能打出 ’ 的部分代码被删除了。可以私信找我 ~

    运行代码得到数据

    请添加图片描述

    请添加图片描述

    完整代码

    文章代码含 ‘ 平台原因不能打出 ’ 的部分代码被删除了。可以私信找我 ~

    需要源码、教程,或者是自己有关python不懂的问题,都可以来这里哦 https://jq.qq.com/?_wv=1027&k=9I8fvzhm 这里还有学习资料与免费课程领取

    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 = '某tuan'
        data = {
            'uuid': '6e481fe03995425389b9.1630752137.1.0.0',
            'userid': '266252179',
            'limit': '32',
            'offset': page,
            'cateId': '-1',
            'q': '烤肉',
            ',
        }
        headers = {
            'Referer': '某tuan',
            '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://www.meituan.com/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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    好啦,今天的分享到这里就结束了 ~
    对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
    觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

    请添加图片描述
    请添加图片描述

  • 相关阅读:
    [SD] stable diffusion webui forge 安装
    【Java】异常、线程
    什么是正负样本
    OpenCV
    探索Franka机器人 | ROS基础培训
    GO 语言如何用好变长参数?
    使用CodeFirst连接Mysql
    wiresharak捕获DNS
    之前翻硬币问题胡思乱想的完善
    【微机接口】串行通信基础
  • 原文地址:https://blog.csdn.net/aliYz/article/details/126888963