Python获取某品牌加盟数据采集实现可视化数据分析

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

开发环境 :

  • python 3.8 运行代码

  • pycharm 2022.3 辅助敲代码

  • jupyter 数据分析使用软件

模块使用 :

  • requests 数据请求模块 需要安装

  • parsel 数据解析模块

  • csv

  • pandas

  • pyecharts

第三方模块安装:

win + R 输入cmd 输入安装命令 pip install 模块名

(如果你觉得安装速度比较慢, 你可以切换国内镜像源)

完整源码、教程 点击此处跳转文末名片获取 ,我都放在这里了。

实现本案例基本步骤:

  1. 明确需求:

    • 明确采集网址以及数据内容

      网址:

      数据: 每一个品牌基本信息

    I. 抓包分析, 数据是请求那个链接可以得到

    • 开发者工具进行抓包 --> F12 / FN+F12 / 鼠标右键点击检测选择network

    • 刷新网页

    • 搜索数据

    II. 如何才能获取多个数据

    对于单个数据包链接地址, 进行比较, 查看规律

    brandId --> 品牌ID变化

    能不能在某一个数据包当中, 找到所有品牌ID --> 列表页面抓包

代码实现步骤:

  1. 发送请求, 对于 品牌ID的数据包发送请求

  2. 获取数据, 获取服务器返回响应数据

  3. 解析数据, 提取我们需要的内容 ==> 品牌ID

  4. 发送请求, 请求数据详情页

  5. 获取数据, 获取服务器返回响应数据

  6. 解析数据, 提取我们需要的内容 ==> 品牌基本信息

  7. 保存数据, 把数据保存到表格文件

数据采集

导入模块

import requests
import parsel
import csv

写入表格

f = open('品牌.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['品牌','公司','业态类别','拓展状态','创立时间','人均消费/客单价','开店方式','合作期限','面积要求','已进购物中心','详情页',
])
csv_writer.writeheader()

模拟浏览器 <请求头伪装>

headers = {# User-Agent 用户代理 表示浏览器基本身份信息# 源码、解答、教程+V:qian97378获取'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}

多页采集

for page in range(1, 11):print(f'---正在采集第{page}的数据内容---')

请求链接

    url = 'http://******/wsapi/brand/list3_4'# 提交表单data = {"isHaveLink": "","isTuozhan": "","isXxPp": "","kdfs": "","key": "","orderBy": "1","pageNum": page,"pageSize": 60,"pid": "","qy_p": "","qy_r": "","xqMj": "","ytlb1": "","ytlb2": ""}

发送请求

    response = requests.post(url, json=data, headers=headers)json_data = response.json()for index in json_data['data']['list']:link = f'http://*******/brandDetail?brandId={index["brandId"]}'html_data = requests.get(link, headers=headers).textselector = parsel.Selector(html_data)源码、解答、教程+V:qian97378获取title = selector.css('h1.detail-one-tit::text').get().strip()  # 品牌company = selector.css('p.detail-company::text').get()  # 公司info = selector.css('div.detail-three-tit::text').getall()value = selector.css('span.detail-option-value::text').getall()dit = {'品牌': title,'公司': company,'业态类别': info[0],'拓展状态': info[1],'创立时间': value[0],'人均消费/客单价': value[1].strip(),'开店方式': value[2],'合作期限': value[3],'面积要求': value[4],'已进购物中心': value[5],'详情页': link,}# 写入数据csv_writer.writerow(dit)print(dit)

括展小知识

  1. css选择器: 根据标签属性提取数据内容

    strip() 去除左右两端的空格

    h1.detail-one-tit 定义类名为 detail-one-tit 的h1标签 text 获取标签文本数据

数据可视化

import pandas as pd
df = pd.read_csv('data.csv')
df.head()

df['已进购物中心'] = df['已进购物中心'].astype(str).str.replace('家', '').str.replace('--', '0').astype(int)
df['人均消费'] = df['人均消费/客单价'].astype(str).str.replace('--', '0').str.split('-').str.get(0).astype(int)
top10 = df[['品牌', '已进购物中心', '人均消费']].sort_values('已进购物中心', ascending=False)[:10]
ShopList = list(top10['品牌'])
counts = list(top10['已进购物中心'])
price = list(top10['人均消费'])
print(ShopList)
print(counts)
print(price)
from pyecharts import options as opts
from pyecharts.charts import Barc = (Bar().add_xaxis(ShopList).add_yaxis("已进购物中心", counts)源码、解答、教程+V:qian97378获取.add_yaxis("人均消费", price).set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),title_opts=opts.TitleOpts(title="加盟品牌Top10", subtitle="已进购物中心"),)
)
c.render_notebook()

df.head()

top10 = df[['品牌', '人均消费']].sort_values('人均消费', ascending=False)[:10]
ShopList = list(top10['品牌'])
price = list(top10['人均消费'])
from pyecharts import options as opts
from pyecharts.charts import Barc = (Bar().add_xaxis(ShopList).add_yaxis("人均消费", price).set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),title_opts=opts.TitleOpts(title="加盟品牌Top10", subtitle="人均消费"),)
)
c.render_notebook()

df['面积要求'] = df['面积要求'].astype(str).str.replace('--', '0').str.split('-').str.get(0).astype(int)
源码、解答、教程+V:qian97378获取
top10 = df[['品牌', '面积要求']].sort_values('面积要求', ascending=False)[:10]
ShopList = list(top10['品牌'])
area = list(top10['面积要求'])
from pyecharts import options as opts
from pyecharts.charts import Barc = (Bar().add_xaxis(ShopList).add_yaxis("面积要求", area).set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),title_opts=opts.TitleOpts(title="加盟品牌Top10", subtitle="面积要求"),)
)
c.render_notebook()

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Fakerc = (Line().add_xaxis(ShopList).add_yaxis("面积要求", area, is_connect_nones=True).set_global_opts(title_opts=opts.TitleOpts(title="加盟品牌Top10-面积"))
#     .render("line_connect_null.html")
)
c.render_notebook()

尾语 💝

好了,今天的分享就差不多到这里了!

完整代码、更多资源、疑惑解答直接点击下方名片自取即可。

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/7301.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序开发:了解主流的开发框架

小程序是一种不需要下载安装&#xff0c;即点即用的应用程序&#xff0c;可以在微信小程序商店下载。如果你使用过微信的公众号和小程序&#xff0c;你会发现&#xff0c;小程序的使用和公众号、小程序是一样的。因此&#xff0c;从某种程度上说&#xff0c;小程序也是公众号的…

mac上使用brew安装mysql5.7

使用Homebrew进行MySQL数据库的安装需要MacOS系统中已经安装了相关环境 1.查询软件信息 首先使用search命令搜索MySQL数据库完整名称&#xff1a; brew search mysql可以看到5.7版本的MySQL数据库完整名称是mysql5.7 2. 执行安装命令 使用install命令进行软件安装&#xf…

中国信通院联合腾讯安全发布《数据安全治理与实践白皮书》

6月26日&#xff0c;由中国通信标准化协会和中国信息通信研究院联合主办的“2023大数据产业发展大会”在北京启幕&#xff0c;大会发布了多项中国信息通信研究院及相关机构在数智化领域最新研究和实践成果。 腾讯云安全总经理李滨出席了数据安全高质量发展论坛&#xff0c;分享…

赛效:如何将PDF文件免费转换成Word文档

1&#xff1a;在网页上打开wdashi&#xff0c;默认进入PDF转Word页面&#xff0c;点击中间的上传文件图标。 2&#xff1a;将PDF文件添加上去之后&#xff0c;点击右下角的“开始转换”。 3&#xff1a;稍等片刻转换成功后&#xff0c;点击绿色的“立即下载”按钮&#xff0c;将…

【书】《Python全栈测试开发》——浅谈我所理解的『自动化』测试

目录 1. 自动化测试的What and Why?1.1 What1.2 Why2. 自动化的前戏需要准备哪些必备技能?3. 自动化测试类型3.1 Web自动化测试3.1.1 自动化测试设计模式3.1.2 自动化测试驱动方式3.1.3 自动化测试框架3.2 App自动化测试3.3 接口自动化测试4. 自动化调优《Python全栈测试开发…

教你如何将纬地数据与实景三维模型进行叠加

概述&#xff1a; 纬地是公路设计的常用软件&#xff0c;在国内的普及率很高。传统的纬地数据文件以二维线条形式呈现在CAD中。本文提出了一种新思路、新方法&#xff0c;即将纬地的设计成果与无人机航拍的高精度倾斜摄影模型叠加在一起&#xff0c;辅助设计方案复核。 ​纬地…

【SpringMVC】统一异常处理 前后台协议联调 拦截器

1&#xff0c;统一异常处理 1. 问题描述 在讲解这一部分知识点之前&#xff0c;我们先来演示个效果&#xff0c;修改BookController类的getById方法 GetMapping("/{id}") public Result getById(PathVariable Integer id) {//手动添加一个错误信息if(id1){int i …

计算机毕业论文内容参考|基于Python的手机订餐系统的设计与实现

文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势3课题内容相关技术与方法介绍系统分析系统设计系统实现系统测试总结与展望1本文总结2后续工作展望导文 计算机毕业论文内容参考|基于Python的手机订餐系统的设计与实现 摘要 本文基于Python语言,设计并实现了一个手机订餐…

Python 集合探索:解密高效数据操作和快速算法的奇妙世界

前言 在 Python 的众多数据结构中&#xff0c;集合&#xff08;Sets&#xff09;是一个引人注目且实用的概念。集合提供了一种存储无顺序、唯一元素的数据结构&#xff0c;它们不仅可以帮助我们高效处理数据&#xff0c;还能应用于各种算法和问题。 本博客将带您踏上一段关于…

leetcode刷题记录

leetcode刷题记录 永远年轻 永远从零开始已刷题 永远年轻 永远从零开始 已刷题 剑指 Offer 05. 替换空格 字符串是不可变序列 新建一个列表复制原来的内容 在需要修改处进行修改 剑指 Offer 06. 从尾到头打印链表 python返回逆序数组 剑指 Offer 09. 用两个栈实现队列 创建两…

Idea整合Maven安装及配置教程(图文详解)

目录 友情提醒第一章、Maven概述1.1&#xff09;Maven是什么1.2&#xff09;Maven进行构建&#xff08;build&#xff09;的主要环节 第二章、Maven的下载安装和配置2.1&#xff09;Maven的下载2.2&#xff09;Maven环境变量配置2.3&#xff09;Maven文件setting的配置 第三章、…

目标检测mAP

概述 AP (Average precision) is a popular metric in measuring the accuracy of object detectors like Faster R-CNN, SSD, etc. Average precision computes the average precision value for recall value over 0 to 1. It sounds complicated but actually pretty simple…