【愚公系列】《Python网络爬虫从入门到精通》064-项目实战电商数据侦探(外设产品热卖榜)

举报
愚公搬代码 发表于 2025/06/22 20:08:15 2025/06/22
【摘要】 🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主!👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"挖山不止"的毅力为开发者们搬开知识道路上的重重阻碍!💎【行业认证·权威头衔】✔ 华为云天团核心成员:特约编辑/云享专家/开发者专家/产品云测专家✔ 开发者社区...

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟

📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主!

👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"挖山不止"的毅力为开发者们搬开知识道路上的重重阻碍!

💎【行业认证·权威头衔】
✔ 华为云天团核心成员:特约编辑/云享专家/开发者专家/产品云测专家
✔ 开发者社区全满贯:CSDN博客&商业化双料专家/阿里云签约作者/腾讯云内容共创官/掘金&亚马逊&51CTO顶级博主
✔ 技术生态共建先锋:横跨鸿蒙、云计算、AI等前沿领域的技术布道者

🏆【荣誉殿堂】
🎖 连续三年蝉联"华为云十佳博主"(2022-2024)
🎖 双冠加冕CSDN"年度博客之星TOP2"(2022&2023)
🎖 十余个技术社区年度杰出贡献奖得主

📚【知识宝库】
覆盖全栈技术矩阵:
◾ 编程语言:.NET/Java/Python/Go/Node…
◾ 移动生态:HarmonyOS/iOS/Android/小程序
◾ 前沿领域:物联网/网络安全/大数据/AI/元宇宙
◾ 游戏开发:Unity3D引擎深度解析
每日更新硬核教程+实战案例,助你打通技术任督二脉!

💌【特别邀请】
正在构建技术人脉圈的你:
👍 如果这篇推文让你收获满满,点击"在看"传递技术火炬
💬 在评论区留下你最想学习的技术方向
⭐ 点击"收藏"建立你的私人知识库
🔔 关注公众号获取独家技术内参
✨与其仰望大神,不如成为大神!关注"愚公搬代码",让坚持的力量带你穿越技术迷雾,见证从量变到质变的奇迹!✨ |

🚀前言

我们已经完成了电商数据侦探项目的多个环节,包括需求分析、系统设计、UI设计、数据爬取和展示等。而今天,我们将进入一个新的实战模块——外设产品热卖榜

在电商平台中,热卖榜单是消费者用来参考商品购买决策的重要依据,尤其是在竞争激烈的外设产品市场中,热销产品往往能够迅速吸引大量关注。作为一名爬虫开发者,抓取并分析这些热销产品的数据,能够帮助商家了解市场趋势,为产品推广与定价提供有力的数据支持。

在本篇文章中,我们将着重学习如何构建一个外设产品热卖榜,并且基于我们爬取的电商数据进行展示和分析。具体内容包括:

  1. 热卖榜单的需求分析:根据电商平台的特点,分析哪些因素会影响外设产品的热销排名,如销量、评价、价格等,明确热卖榜单的抓取指标。
  2. 数据获取与筛选:通过爬虫获取电商平台上的外设产品数据,并根据销量、评价数等指标筛选出热卖产品。
  3. 热卖榜的排序与展示:根据爬取的数据进行排序,制作外设产品热卖榜,并在主窗体中展示出来。
  4. 热销产品趋势分析:对热卖榜中的外设产品进行分析,揭示背后的市场趋势,例如哪些品牌和品类的外设产品更受欢迎。
  5. 图形化数据展示:通过图表或列表形式,将外设热卖榜的排名、销量、价格等信息清晰呈现,帮助用户直观了解市场动态。

通过本篇文章的学习,你将不仅学会如何抓取和处理外设产品的热销数据,还能将其呈现给用户,帮助他们快速找到市场上最热的外设产品。同时,你也将加深对电商数据分析、趋势洞察和数据可视化展示的理解和实践。

🚀一、外设产品热卖榜

在实现显示外设产品热卖榜时,我们需要先创建一个窗体,展示热卖排行数据,并通过表格控件显示数据。

🔎1.设计外设产品热卖榜窗体

使用 Qt Designer 工具设计外设产品热卖榜窗体:

  1. 打开 Qt Designer 工具。
  2. 设置窗体的最大尺寸与最小尺寸为 1040x600。
  3. 移除默认的状态栏(status bar)和菜单栏(menu bar)。
  4. 向窗体中拖入一个 QTableWidget 控件,用于显示外设产品热卖排行信息。
  5. 拖入一个 QLabel 控件,用于显示排行榜的标题。
  6. 保存窗体设计为 heat_window.ui 文件。

窗体设计预览效果如下图:

image.png

🔎2.转换为 Python 文件并修改

将 heat_window.ui 文件转换为 Python 文件 heat_window.py。打开转换后的文件并进行修改:

  1. 修改自动生成的 Ui_MainWindow 类为 Heat_MainWindow 类。
  2. 导入必要的模块和类。

🔎3. 导入热卖榜窗体类

在 show_window.py 文件中,导入刚刚创建的热卖排行榜窗体类:

from heat_window import Heat_MainWindow  # 导入热卖排行榜窗体类

🔎4.创建 Heat 类并初始化表格数据

在 show_window.py 文件中创建 Heat 类,并在其 __init__() 方法中初始化热卖榜表格数据:

from PyQt5 import QtGui, QtWidgets

class Heat(QMainWindow, Heat_MainWindow):
    def __init__(self):
        super(Heat, self).__init__()
        self.setupUi(self)  # 设置UI
        self.centralwidget.setAutoFillBackground(True)  # 开启自动填充背景
        palette = QtGui.QPalette()  # 创建调色板对象
        palette.setBrush(QtGui.QPalette.Background, QtGui.QBrush(QtGui.QPixmap('img_resources/rankings_bg.png')))  # 设置背景图片
        self.centralwidget.setPalette(palette)  # 设置背景

        # 获取热卖排行榜数据
        row, column, results = mysql.query_rankings(cur, 'jd_ranking')
        
        # 设置表格不可编辑
        self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
        self.tableWidget.verticalHeader().setHidden(True)  # 隐藏行号

        # 设置表格行列数
        self.tableWidget.setRowCount(row)
        self.tableWidget.setColumnCount(column)

        # 设置表格头部标签
        self.tableWidget.setHorizontalHeaderLabels(['排名', '商品名称', '京东价', '京东 ID', '好评率'])
        self.tableWidget.setStyleSheet("background-color:rgba(0,0,0,0)")  # 设置透明背景

        # 拉伸表格根据窗体大小
        self.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)

        # 填充表格内容
        for i in range(row):
            for j in range(column):
                temp_data = results[i][j]  # 临时记录数据
                data = QtWidgets.QTableWidgetItem(str(temp_data))  # 转换为可以插入表格的项
                self.tableWidget.setItem(i, j, data)  # 插入数据

🔎5.创建 open()heat_itemDoubleClicked() 方法

在 Heat 类中,创建 open() 方法用于打开热卖榜窗体,并处理表格项的双击事件,展示商品的关注确认窗口:

class Heat(QMainWindow, Heat_MainWindow):
    def open(self):
        self.show()  # 显示热卖榜窗体

    def heat_itemDoubleClicked(self):
        item = self.tableWidget.currentItem()  # 获取当前点击的表格项
        if item.column() == 1:  # 判断是否点击商品名称列
            attention.lineEdit.setText(item.text())  # 显示商品名称在关注编辑框
            global attention_info
            attention_info = mysql.query_id_info(cur, item.row() + 1)  # 获取关注商品的详细信息
            attention.open()  # 显示关注窗体

🔎6.配置事件处理方法

在主程序中,指定取消关注按钮事件之后,创建热卖排行榜窗体对象并配置双击事件处理方法。代码如下:

# 创建热卖排行榜窗体对象
heat = Heat()

# 设置表格项的双击事件处理方法
heat.tableWidget.itemDoubleClicked.connect(heat.heat_itemDoubleClicked)

# 主窗体菜单项触发打开热卖排行榜窗体的事件处理方法
main.action_heat.triggered.connect(heat.open)

🔎7.运行程序并查看效果

  1. 运行 show_window.py 文件。

  2. 在主窗体左侧顶部的菜单中,选择 外设产品热卖榜 选项(如图所示)。
    image.png

  3. 打开外设产品热卖榜窗体后,双击某个商品名称,将弹出确认关注的窗体(如图所示)。
    image.png

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。