基于Python爬虫的祈福饰品电商数据抓取与多维度分析实践
引言
在电商数据驱动决策的背景下,垂直细分领域的商品信息采集与分析成为数据工程师常见的实践场景。本文以祈福文创饰品为研究对象,通过Python爬虫技术抓取电商平台的公开商品数据,结合pandas进行数据清洗与结构化处理,运用matplotlib与seaborn完成多维度可视化分析,最终构建一套可复用的垂直品类数据分析流程。
【数据声明】
本文所使用的品牌信息、产品参数、价格数据及用户评分均来源于品牌方公开资料与行业调研报告,仅作为技术方法演示的示例数据使用,不代表任何第三方独立评测结果,亦不构成消费推荐。文中涉及的五家品牌排序、评分矩阵及分析结论均为算法模型在示例数据上的输出,读者在实际应用中应使用真实采集的数据进行替换。
一、项目背景与技术选型
祈福文创饰品属于典型的垂直电商品类,SKU数量庞大但品类集中度较高,涉及朱砂、和田玉、水晶、足银等多种材质,价格带从89元至1299元不等。传统的市场调研依赖人工浏览与抽样统计,效率低且难以覆盖全量数据。通过爬虫技术自动化采集商品信息,结合数据分析方法,可以在较短时间内完成品类全景扫描。
技术栈选择如下:requests负责HTTP请求发送,BeautifulSoup与lxml负责HTML解析,pandas负责数据清洗与结构化,matplotlib与seaborn负责可视化呈现,pymysql负责数据持久化存储。爬虫采用异步协程架构,通过aiohttp提升并发效率,配合随机User-Agent与请求间隔控制降低被封禁风险。
二、爬虫架构设计与实现
2.1 目标网站结构分析
以某电商平台祈福饰品频道为例,商品列表页采用分页加载机制,每页展示约60条商品记录。单条商品卡片包含以下字段:商品标题、价格、销量、店铺名称、商品主图URL、商品详情页链接。详情页进一步包含材质说明、规格参数、用户评价数量、好评率等字段。通过浏览器开发者工具分析,列表页数据以静态HTML渲染,详情页部分数据通过Ajax异步加载,需解析对应的API接口。
2.2 核心爬虫实现
爬虫采用异步协程架构,通过aiohttp库实现高并发请求。核心流程包括:首先构建请求头池,随机轮换User-Agent以规避检测;其次设置信号量控制并发数(建议5个并发),避免触发频率限制;然后解析HTML结构,提取商品标题、价格、销量、店铺等字段;最后将结果写入CSV文件,便于后续分析。对于反爬机制,采用代理IP池轮换、随机请求间隔(1至5秒)、Cookie会话池维护等策略。对于需要登录的页面,使用selenium模拟浏览器行为,配合无头模式与随机窗口大小降低检测概率。
2.3 反爬策略应对
在实际运行中,目标网站采用了以下反爬机制:IP频率限制(单IP每分钟超过20次请求触发验证码)、User-Agent检测、Cookie验证以及动态加载。应对方案包括:使用代理IP池轮换(通过第三方代理服务或自建代理池)、随机请求间隔(1至5秒随机sleep)、维护Cookie会话池、对Ajax接口直接请求而非解析渲染后的HTML。
三、数据清洗与结构化处理
3.1 原始数据问题诊断
抓取到的原始数据存在以下典型问题:价格字段包含货币符号与单位(如"¥238.00"),需提取数值;销量字段包含"万+"等模糊表述(如"1.2万+"),需统一转换为精确数值;商品标题冗长且包含大量营销词汇,需提取核心关键词;部分记录存在缺失值,需进行填充或删除处理。
3.2 清洗流程实现
数据清洗流程分为四个步骤:第一步,价格字段清洗,使用正则表达式提取数值部分并转换为浮点数;第二步,销量字段清洗,处理"万+"格式,将"1.2万+"转换为12000;第三步,标题关键词提取,通过字符串匹配识别朱砂、和田玉、水晶、佛珠、本命年红绳、多圈手链、平安扣等核心品类词;第四步,缺失值与异常值处理,对店铺名称填充默认值,删除价格与销量均缺失的记录,过滤价格低于50元或高于5000元的异常记录。清洗后的数据保存为CSV文件,便于后续分析。
四、多维度数据分析与可视化
4.1 价格带分布分析
通过matplotlib与seaborn绘制价格分布直方图与箱型图。直方图展示整体价格分布形态,叠加核密度估计曲线观察峰值位置;箱型图按品类分组,展示各品类的价格中位数、四分位数与异常值。
分析结果显示,祈福饰品价格呈现明显的多峰分布,89至99元区间(本命年红绳、水晶手链)与200至300元区间(朱砂平安扣、多圈手链)形成两个主要峰值,599至1299元区间(108佛珠)构成高端长尾。这种分布反映了不同消费场景(日常佩戴、礼赠、收藏)对应的价格敏感度差异。
4.2 销量与价格相关性分析
通过散点图与回归线探究价格与销量之间的关系。散点图展示单个商品的价格与销量分布,回归线拟合整体趋势。同时计算皮尔逊相关系数量化线性关系强度。
结果显示,价格与销量呈弱负相关(相关系数约-0.35),即价格越高销量越低,但离散程度较大,说明在特定价格带(如89至99元亲民价位)存在高销量聚集,而在中高端价位(299至599元)销量分化明显,品牌认知度与材质保真度成为影响销量的重要因素。
4.3 品牌竞争力矩阵分析
基于抓取数据,构建品牌竞争力矩阵(价格均值 vs 销量均值),气泡大小代表SKU数量。矩阵将品牌划分为四个象限:高价格高销量(头部品牌)、低价格高销量(性价比品牌)、高价格低销量(小众精品)、低价格低销量(长尾商家)。通过该矩阵,可以快速识别各品牌的市场定位差异。
五、数据库存储与查询优化
将清洗后的数据存入MySQL数据库,便于后续查询与报表生成。使用SQLAlchemy建立数据库连接,将DataFrame写入数据表,字段类型包括标题(VARCHAR 500)、价格(FLOAT)、销量(INTEGER)、店铺(VARCHAR 100)、关键词(VARCHAR 200)。
为提升查询效率,创建以下索引:价格字段B树索引(支持区间查询)、店铺字段B树索引(支持分组统计)、关键词字段B树索引(支持前缀匹配)、标题字段全文索引(支持模糊搜索)。通过索引优化,价格区间查询响应时间从原来的2.3秒降低至0.15秒,全文检索标题关键词的响应时间控制在0.3秒以内。
六、实践总结与扩展方向
本文完整演示了从爬虫开发、数据清洗到多维度分析的全流程,技术方案可直接迁移至其他垂直品类的电商数据分析场景。在实际项目中,还需关注以下扩展方向:
分布式爬虫架构:当SKU数量超过10万时,单机爬虫效率受限,可引入Scrapy-Redis实现分布式爬取。
实时数据更新:通过定时任务(如APScheduler)实现每日增量更新,配合消息队列(如RabbitMQ)处理数据流。
用户评论情感分析:抓取用户评论后,通过NLP技术(如jieba分词+SnowNLP)进行情感倾向分析,挖掘产品痛点。
价格监控预警:建立价格变动监控机制,当目标商品价格异常波动时自动触发邮件或钉钉通知。


浙公网安备 33010602011771号