【Python爬虫实战案例】采集城市桌游商家数据信息,做可视化演示

news/2024/7/19 9:09:48 标签: python, 爬虫, 开发语言

前言

这里容我罗嗦几句 😗

这个时间,我想大学生应该都回学校了吧,嘿嘿

现在应该蛮忙的,有些的还要准备开学考,临近毕业的朋友,也快要因为工作而烦恼了,但是!!

咱也是要有点娱乐时间的,俗话说劳逸结合嘛

正好周末我还要和朋友出去玩,这下雨天的,也不好在室外逛,索性就准备看看剧本杀或者其他桌游

咱就是干啥都是要有所准备的,这不得用python来采集采集这些桌游店的数据信息,比较比较哪家更好吗

再顺便做个 可视化数据展示

那咱就直接开始吧

请添加图片描述

环境使用:

  • Python 3.8
  • Pycharm

模块使用:

  • requests >>> pip install requests
  • re
  • csv

如何安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests)回车
  2. 在pycharm中点击Terminal(终端) 输入安装命令

基本流程思路

一. 数据来源分析

  1. 找url, 找我们想要数据从哪里来的
    采集美 —> 武汉 桌游 上商品数据
  2. 通过开发者工具进行抓包分析
    F12 或者鼠标右键点击检查, 选择 network

二. 代码实现步骤过程: 固定四大步骤

  1. 发送请求, 对于刚刚分析得到url地址发送请求

  2. 获取数据, 获取服务器返回响应数据 —> 开发者工具里面response

  3. 解析数据, 提取我们想要数据内容 —> 店铺基本信息

  4. 保存数据, 保存数据, 保存表格里面

  5. 多页数据采集

多页数据采集 —> 循环 for <目的>

分析请求url地址参数变化

在这里插入图片描述

实现代码

导入模块

python"># 导入数据请求模块  ---> 第三方模块 需要在cmd里面进行 pip install requests  
import requests
# 导入格式化输出模块  ---> 内置模块 不需要安装
from pprint import pprint
# 导入csv模块  ---> 内置模块 不需要安装
import csv

创建文件

python">f = open('武汉桌游多页.csv', mode='a', newline='', encoding='utf-8')
# f 创建文件对象 fieldnames 字段名, 对应表头数据
csv_writer = csv.DictWriter(f, fieldnames=[
    '店名',
    '商圈',
    '店铺类型',
    '人均消费',
    '最低消费',
    '评分',
    '评论',
    '经度',
    '纬度',
    '详情页',
])
# 写入表头
csv_writer.writeheader()

1.发送请求

模拟浏览器对于url地址发送请求

  • 相对于长链接, 可以分段写入
    链接问号后面内容 属于请求参数 可以分开写
  • 批量替换
    1. 选中替换内容 ctrl + r
    2. 选中正则 .* 勾选上
    3. 使用正则命令替换
    (.?): (.)
    ‘$1’: ‘$2’,
  • headers请求头使用:

确定url请求地址

在这里插入图片描述

请求参数

python">    data = {
        'uuid': '760326fa1f194488b4b2.1659677166.1.0.0',
        'userid': '266252179',
        'limit': '32',
        'offset': page,
        'cateId': '-1',
        'q': '桌游',
    }
    # 伪装浏览器 headers请求头
    headers = {
        # Referer 防盗链 告诉服务器我们请求的网址从哪里跳转过来的 <行程码>
        'Referer': 'https://wh.meituan.com/',
        # User-Agent 用户代理 表示浏览器基本身份信息 <健康码>
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    # 发送请求 <Response [403]>   没有访问权限...请求失败了
    response = requests.get(url=url, params=data, headers=headers)
    # 得到响应对象
    print(response)

2. 获取数据

获取服务器返回响应数据 print(response.json())

3. 解析数据,

提取我们想要数据内容

  • response.json() —> 字典数据类型
  • 字典数据取值, 根据冒号左边的内容[键], 提取冒号右边的内容[值] 键值对取值

格式化输出 可以更加方便提取数据 pprint(response.json())

python">for index in response.json()['data']['searchResult']:
        href = f'https://www.meituan.com/xiuxianyule/{index["id"]}/'
        # 创建一个字典接收数据  百度滑轮设置pycharm字体大小
        # python基础语法知识 for循环遍历  字典创建与取值 字符串格式化方法
        dit = {
            '店名': index['title'],
            '商圈': index['areaname'],
            '店铺类型': index['backCateName'],
            '人均消费': index['avgprice'],
            '最低消费': index['lowestprice'],
            '评分': index['avgscore'],
            '评论': index['comments'],
            '经度': index['longitude'],
            '纬度': index['latitude'],
            '详情页': href
        }

4.写入数据

python">        csv_writer.writerow(dit)
        print(dit)

可视化代码

全部源码 点击文末名片领取~

在这里插入图片描述

效果展示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


http://www.niftyadmin.cn/n/54702.html

相关文章

TDengine时序数据库的简单使用

最近学习了TDengine数据库&#xff0c;因为我们公司有硬件设备&#xff0c;设备按照每分钟&#xff0c;每十分钟&#xff0c;每小时上传数据&#xff0c;存入数据库。而这些数据会经过sql查询&#xff0c;统计返回展示到前端。但时间积累后现在数据达到了百万级数据&#xff0c…

opengl glsl shader vscode安装插件glsl_canvas 和 shader languagesupportForVS Code

u_resolution 是画布尺寸&#xff0c;即代表画布宽高 //给内置变量gl_PointSize赋值像素大小&#xff0c;注意值是浮点数 gl_PointSize20.0; // 片元沿着x方向渐变 gl_FragColor vec4(gl_FragCoord.x/500.0*1.0,1.0,0.0,1.0); // 接收插值后的纹理坐标 varying vec2 v…

TCP协议:如何保证页面文件能被完整送达浏览器

在衡量 Web 页面性能的时候有一个重要的指标叫“FP&#xff08;First Paint&#xff09;”&#xff0c;是指从页面加载到首次开始绘制的时长。这个指标直接影响了用户的跳出率&#xff0c;更快的页面响应意味着更多的 PV、更高的参与度&#xff0c;以及更高的转化率。那什么影响…

Linux 安装jenkins和jdk11

Linux 安装jenkins和jdk111. Install Jdk112. Jenkins Install2.1 Install Jenkins2.2 Start2.3 Error3.Awakening1.1 Big Data -- Postgres4. Awakening1. Install Jdk11 安装jdk11 sudo yum install fontconfig java-11-openjdk 2. Jenkins Install 2.1 Install Jenkins 下…

机器学习之多层感知机原理详解、公式推导(手推)、面试问题、简单实例(python实现,sklearn调包)

目录1. 多层感知机原理神经元概念误差反向传播更新权重2. 公式推导3. 实例3.1. 数据集3.2. python3.3. torch4. 几个注意点(面试问题)5. 运行&#xff08;可直接食用&#xff09;1. 多层感知机原理 神经元概念 多层感知机就是由好几层神经元组成的&#xff0c;每个神经元包括输…

volatile 关键字

1.volatile 能保证内存可见性 volatile 修饰的变量, 能够保证 "内存可见性". 代码在写入 volatile 修饰的变量的时候, 改变线程工作内存中volatile变量副本的值将改变后的副本的值从工作内存刷新到主内存 代码在读取 volatile 修饰的变量的时候 从主内存中读取vol…

如何理解 K8s 动态伸缩与触发上线?

K8s 版本&#xff1a;1.23.6 目录一、动态伸缩二、触发上线一般地&#xff0c;如果仅修改 Pod 的副本数&#xff08;如新增/缩减&#xff09;&#xff0c;这就属于动态伸缩。如果是修改容器镜像的版本&#xff0c;则会触发上线&#xff0c;具体看下面例子。 一、动态伸缩 1、…

利用 ChatGPT 回答 R 相关问题

最近小编也尝试使用了 ChatGPT&#xff0c;下面给出一些知乎上常见 R 语言相关问题的回答。供大家参考&#xff1a; 目录 文章目录目录经典问题预测数据科学软件排名数据科学的 10 个常用 R 包R 语言入门书籍和网站推荐回答专业问题绘图绘制正负柱状图动态散点图构建 Shiny 程…