使用Python和PyQt5打造的数据采集工具-咸鱼

在大数据时代,数据采集成为了数据分析和市场研究的重要环节。为了帮助用户高效地收集咸鱼平台上的商品数据,我们开发了一个名为“咸鱼采集器”的桌面应用程序。本文将详细介绍如何使用Python和PyQt5来实现这一工具,并展示其主要功能和使用方法。

开发背景

咸鱼作为中国领先的二手交易平台,拥有海量的商品数据。对于研究人员和商家来说,能够从小红书平台采集特定商品的数据,对于市场分析、商品定价和用户行为研究等方面具有重要价值。因此,我们开发了咸鱼采集器,旨在提供一个简单易用的数据采集解决方案。

技术选型

咸鱼采集器主要基于以下技术构建:

  • Python:一种广泛使用的高级编程语言,以其清晰的语法和强大的库支持而闻名。
  • PyQt5:一个创建桌面应用程序的Python绑定库,提供了Qt库的丰富功能,使得开发跨平台的GUI应用程序变得简单。
  • pandas:一个强大的数据分析库,用于数据处理和导出。
  • DrissionPage:一个Python库,用于自动化网页操作,模拟浏览器行为。

功能介绍

咸鱼采集器具备以下核心功能:

  1. 用户登录:用户可以在应用程序中登录咸鱼账户,以便采集更多的商品数据。
  2. 关键词搜索:用户可以输入一个关键词,采集器将搜索与该关键词相关的商品。
  3. 数据采集:采集器将自动浏览搜索结果,收集商品的详细信息,包括用户昵称、商品标题、位置、价格、发布时间、链接、描述、芝麻信用等级和分数。
  4. 数据展示:采集到的数据将在应用程序的表格中实时展示,方便用户查看。
  5. 数据导出:用户可以将采集到的数据导出为Excel文件,方便后续的数据分析。

关键代码实现

下面,我将展示实现这些功能的关键代码。

GUI布局

使用PyQt5的QGridLayout来布局用户界面,包括输入框、按钮和表格。

class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
        self.data_list = []  # 用于存储采集的数据

    def initUI(self):
        layout = QGridLayout()

        # 商品关键词输入框
        self.keyword_label = QLabel('商品关键词:', self)
        layout.addWidget(self.keyword_label, 0, 0)

        self.keyword_input = QLineEdit(self)
        self.keyword_input.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
        layout.addWidget(self.keyword_input, 0, 1, 1, 2)

        # 更多布局代码...

数据采集

使用DrissionPage库来模拟浏览器行为,采集咸鱼平台上的商品数据。

def handle_collect(self):
    keyword = self.keyword_input.text()
    quantity_number = self.quantity_input.text()
    if keyword and quantity_number:
        quantity_number = int(quantity_number)
        self.log_message(f'开始采集关键词: {keyword}')
        total = 0
        page.listen.start('https://h5api.m.goofish.com/h5/mtop.taobao.idlemtopsearch.pc.search/1.0/') 
        page.get(f'https://www.goofish.com/search?q={keyword}') 
        while total < quantity_number:
            res = page.listen.wait(timeout=10)
            data = res.response.body
            resultList = data['data']['resultList']
            for item in resultList:
                # 数据处理和表格更新代码...
                total += 1
                if total >= quantity_number:
                    break

            # 翻页逻辑...
            self.log_message('采集完成!')
    else:
        self.log_message('商品关键词为空!请输入商品关键词!')

数据导出

使用pandas库将采集到的数据导出为Excel文件。

def handle_export(self):
    keyword = self.keyword_input.text()
    if not keyword:
        self.log_message('请输入商品关键词以导出数据。')
        return

    today = datetime.now()
    filename = f"{today.strftime('%Y%m%d')}-{keyword}.xlsx"
        
    df = pd.DataFrame(self.data_list)
    try:
        df.to_excel(filename, index=False)
        QMessageBox.information(self, '导出成功', f'数据已导出到 {filename}')
        self.data_list.clear()
        self.table_widget.clearContents()
    except Exception as e:
        QMessageBox.critical(self, '导出失败', f'导出数据时发生错误: {e}')

程序界面:

0210ffa42af043f2bd3f409583cc8496.png

需要完整源码有偿可私信:

c3fa0eb2e9814be1b5574fd8473bd1f0.jpeg

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛马程序员2025

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值