当前位置: 首页 > article >正文

用 Trae IDE 打造一个桌面小爬虫:从 PyQt5 开始,轻松采集掘金首页内容

很多程序员都有这样的经历:刷掘金、看文章、找灵感、追热点。但你有没有想过,有一天让“爬虫”代替你去浏览这些内容?自动提取标题、作者、点赞数、评论数,一键生成你的专属“技术热点日报”。

今天我们就用 Trae IDE + PyQt5 来完成这样一个实用而不复杂的小项目:一个图形化的“掘金首页信息爬取器”。它不仅能自动抓取掘金首页的文章信息,还能在桌面界面中整洁地展示数据,为你节省大量筛选时间。

而 Trae IDE 的低门槛、多插件、轻后端特性,会让这件事变得非常简单。

项目目标:做一款你看得见的“网页爬虫”

我们要做的不是命令行下冷冰冰的“爬虫脚本”,而是一个有 GUI 界面的小工具,打开软件后,点击一个按钮,它就能帮你把掘金首页的文章都“搬”过来,像新闻列表一样列出来。

具体来说,我们想要实现这些功能:

  • 一键采集掘金首页推荐文章列表

  • 抽取标题、作者、点赞数、评论数、发布时间

  • 显示在桌面窗口中,可滚动查看

  • 可以刷新、导出为本地 Markdown 或 JSON

  • 可选择“热门排序”或“最新发布”排序方式(高级功能)

同时我们不追求复杂的后台部署,也不想搭配浏览器环境 —— 纯 Python、纯桌面化、纯原生体验。使用 Trae IDE 的话,这一切将变得非常自然。

技术栈分析:PyQt5 + requests + Trae 的完美组合

为什么用 PyQt5?

PyQt5 是一个非常成熟的 GUI 框架,能够做出现代感强、用户体验不错的桌面应用。它既可以做简单的按钮窗口,也能做出复杂的数据展示表格。

在这个项目中,我们用 PyQt5 来实现以下界面组件:

  • 输入框(可设置采集的页数或筛选条件)

  • 按钮(“开始采集”、“刷新”、“导出”等)

  • 表格视图(展示爬取下来的文章数据)

  • 滚动区域(查看更多内容时保持界面流畅)

相比 Tkinter,PyQt5 的可扩展性和美观度更好;而对比 Electron,它又更轻量级,更适合做这种“数据爬取 + 信息展示”的小工具。

网络爬取部分

掘金首页的数据,大多是动态加载的,页面结构基于 Vue 渲染,直接用 requests 抓 HTML 是抓不到完整数据的。不过,掘金作为一个开放社区,推荐内容其实来自一个公开的接口(比如 https://api.juejin.cn/content_api/v1/article/recommend_all_feed 之类),我们可以直接模拟 POST 请求获取数据 JSON。

在 Trae IDE 里,借助原生 Python 脚本支持,我们可以轻松使用 requests 库来模拟网络请求、处理 JSON 响应,并提取出文章内容。

话不多说,上教程。

首先,我们先创建一个“网络爬虫”的只智能体,并简要的描述其角色,功能等等;

添加图片注释,不超过 140 字(可选)

然后再Trae的对话框中@我们创建的智能体,并输入需求,然后点击发送即可。

添加图片注释,不超过 140 字(可选)

接下来,Trae会根据需求,进行思考和任务自动实现。

添加图片注释,不超过 140 字(可选)

2-3分钟后,我们就可以难道结果;运行程序,看一下效果。

添加图片注释,不超过 140 字(可选)

功能代码块:

 
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrlclass JuejinCrawler(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('掘金数据抓取')self.setGeometry(300, 300, 800, 600)layout = QVBoxLayout()self.browser = QWebEngineView()self.btn = QPushButton('开始抓取', self)self.btn.clicked.connect(self.start_crawl)layout.addWidget(self.browser)layout.addWidget(self.btn)self.setLayout(layout)def start_crawl(self):self.browser.load(QUrl('https://juejin.cn/'))self.browser.loadFinished.connect(self.handle_load_finished)def handle_load_finished(self):self.browser.page().runJavaScript("""Array.from(document.querySelectorAll('.entry-list li')).map(item => ({title: item.querySelector('.title').innerText,author: item.querySelector('.username').innerText,time: item.querySelector('.time')?.innerText || '',link: item.querySelector('a')?.href || ''
}));""",self.save_results)def save_results(self, results):import jsonwith open('juejin_data.json', 'w', encoding='utf-8') as f:json.dump(results, f, ensure_ascii=False, indent=2)print('抓取完成,结果已保存到juejin_data.txt')if __name__ == '__main__':app = QApplication(sys.argv)ex = JuejinCrawler()ex.show()sys.exit(app.exec_())

我们常说“编程改变世界”,但其实,哪怕只是写一个能帮自己高效获取技术文章的小工具,也是一种用代码改变生活的方式。

在这个项目中,我们用 PyQt5 打造出一个小而美的爬虫工具,借助 Trae IDE 的模块化、可视化支持,让整个开发过程变得顺畅而愉快。

相关文章:

用 Trae IDE 打造一个桌面小爬虫:从 PyQt5 开始,轻松采集掘金首页内容

很多程序员都有这样的经历:刷掘金、看文章、找灵感、追热点。但你有没有想过,有一天让“爬虫”代替你去浏览这些内容?自动提取标题、作者、点赞数、评论数,一键生成你的专属“技术热点日报”。 今天我们就用 Trae IDE PyQt5 来完…...

python和风api获取天气(JSON Web Token)

下载安装openssl 默认安装目录,添加C:\Program Files\OpenSSL-Win64\bin到用户Path环境变量 打开cmd,执行命令,会生成两个文件ed25519-private.pem,ed25519-public.pem openssl genpkey -algorithm ED25519 -out ed25519-privat…...

模板应用更新同步到所有开发中的应用

需求是为多个 Vue 3 应用方便地同步模板更新,并且模板自身也可能演进,采用 Git 上游仓库 (Upstream) 策略。这种方法在操作上相对直观,更贴近常规的 Git 工作流,并且能较好地处理模板更新中可能涉及到的配置文件、依赖项以及 Vue …...

git和gitee的常用语句命令

Git 和 Gitee 常用命令及语法规则 一、Git 基础配置与初始化 在使用 Git 进行版本控制之前,需要进行用户签名的配置。此操作只需执行一次即可生效。 git config --global user.name "用户名" # 设置用户名 git config --global user.email "邮箱…...

52、C# 泛型 (Generics)

泛型是 C# 2.0 引入的一项强大功能&#xff0c;它允许你编写可以处理多种数据类型的代码&#xff0c;而无需为每种类型重复编写相同的逻辑。泛型提高了代码的重用性、类型安全性和性能。 基本概念 泛型类 public class GenericClass<T> {private T _value;public Gene…...

理解 Vue 2 的响应式原理:数据劫持与依赖收集的背后

在Vue2中,响应式系统是一切魔法的源头,无论是模板中的数据绑定,还是computed,watch的精准监听,都离不开Vue背后的响应式机制,本文将从源码角度出发,结合实例,深入剖析vue2是如何通过数据劫持(Object.defineProperty)和依赖收集实现响应式的 一.Vue2响应式系统基本原理 vue2中…...

深入理解 Pinia:Vue 状态管理的革新与实践

深入理解 Pinia&#xff1a;Vue 状态管理的革新与实践 一、引言 在 Vue.js 应用开发中&#xff0c;状态管理是构建复杂应用的关键环节。Pinia 作为新一代 Vue 状态管理库&#xff0c;凭借其简洁的 API 设计、强大的开发体验和良好的性能表现&#xff0c;逐渐成为 Vue 开发者的…...

Dubbo高频面试题

引言 作为分布式服务框架的标杆&#xff0c;Dubbo凭借其高性能RPC通信、灵活的服务治理能力和丰富的容错机制&#xff0c;成为Java技术栈中微服务领域的核心考点。本文系统梳理Dubbo高频面试核心知识点&#xff0c;涵盖容错策略、负载均衡、注册中心原理、服务上下线感知等关键…...

Allegro X PCB设计小诀窍--05.如何在Allegro X中实现隐藏电源飞线效果

背景介绍&#xff1a;在PCB设计过程中&#xff0c;布线初期印制板上的飞线错综复杂&#xff0c;信号线和电源线混合交错&#xff0c;但是实际上对于多层板来说&#xff0c;电源的网络一般是通过电源层铺铜连接的&#xff0c;很少需要走线&#xff0c;这样混乱的情况会严重影响设…...

一篇文章教会你ESP8266串口WIFI无线模块实现物联网无线收发,附STM32代码示例

目录 一、ESP-01S无线模块: &#xff08;1&#xff09;特点&#xff1a; &#xff08;2&#xff09;管脚定义&#xff1a; &#xff08;3&#xff09;启动模式&#xff1a; 二、ESP-01S出厂固件烧录&#xff1a; &#xff08;1&#xff09;引脚接线&#xff1a; &#xff0…...

算法-基础算法

一、枚举算法 也称为穷举算法&#xff0c;指的是按照问题本身的性质&#xff0c;一一列举出该问题所有可能的解&#xff0c;并在逐一列举的过程中&#xff0c;将它们逐一与目标状态进行比较以得出满足问题要求的解。在列举的过程中&#xff0c;既不能遗漏也不能重复 1. 问题 …...

特种设备作业人员-G3锅炉水处理如何备考学习?

备考特种设备作业人员 - G3 锅炉水处理可以从了解考试信息、掌握基础知识、选择学习资料、制定学习计划等多个方面入手&#xff0c;以下是具体的建议&#xff1a; ​ ​1.了解考试信息 *明确考试大纲&#xff1a;详细了解 G3 锅炉水处理考试大纲的要求&#xff0c;明确考试的…...

Reactor模式详解:高并发场景下的事件驱动架构

文章目录 前言一、Reactor模式核心思想二、工作流程详解2.1 服务初始化阶段2.2 主事件循环2.3 子Reactor注册流程2.4 IO事件处理时序2.5 关键设计要点 三、关键实现技术四、实际应用案例总结 前言 在现代高性能服务器开发中&#xff0c;如何高效处理成千上万的并发连接是一个关…...

UniApp 生产批次管理模块技术文档

UniApp 生产批次管理模块技术文档 1. 运行卡入站页面 (RunCardIn) 1.1 页面结构 <template><!-- 页面容器 --><view class"runCardIn" :style"{ paddingTop: padding }"><!-- 页头组件 --><pageHeader :title"$t(MENU:…...

项目日记 -Qt音乐播放器 -设置任务栏图标与托盘图标

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【Qt音乐播放器】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 代码仓库&#xff1a;MusicPlayer v1.0版视频展示&#xff1a;Qt -音乐播放器(仿网易云)V1.0 前言 本文的目标&#xff1a; 一是设置任务栏的图标&#xff0c; 二…...

国产 BIM 软件万翼斗拱的技术突破与现实差距 —— 在创新与迭代中寻找破局之路

万翼斗拱在国产BIM领域迈出重要一步&#xff0c;凭借二三维一体化、参数化建模及AI辅助设计等功能形成差异化竞争力&#xff0c;在住宅设计场景中展现效率优势&#xff0c;但与国际主流软件相比&#xff0c;在功能完整性、性能稳定性和生态成熟度上仍有显著差距&#xff0c;需通…...

记录算法笔记(2025.5.29)最小栈

设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int get…...

Android SurfaceFlinger核心工作机制

SurfaceFlinger 核心工作机制解析 1. 启动入口与初始化流程 (1) 进程启动入口 二进制文件&#xff1a;/system/bin/surfaceflinger 源码路径&#xff1a;frameworks/native/services/surfaceflinger/main_surfaceflinger.cppint main(int, char**) {// 1. 初始化进程配置sig…...

Golang|etcd服务注册与发现 策略模式

etcd 是一个开源的 分布式键值存储系统&#xff08;Key-Value Store&#xff09;&#xff0c;主要用于配置共享和服务发现。 ETCD是一个键值&#xff08;KV&#xff09;数据库&#xff0c;类似于Redis&#xff0c;支持分布式集群。ETCD也可以看作是一个分布式文件系统&#xff…...

深度解析UniApp盲盒系统开发:从源码架构到多端部署全流程

​一、正版盲盒系统的技术选型与源码设计​ ​跨平台开发框架的核心配置​ ​UniApp多端适配方案​ 环境搭建&#xff1a;全局安装vue/cli与npm install -g dcloudio/uni-cli&#xff0c;通过uni -V验证版本&#xff08;需≥3.0&#xff09;。多端编译命令&#xff1a; # 编译微…...

STM32的OLED显示程序亲测可用:适用于多种场景的稳定显示解决方案

STM32的OLED显示程序亲测可用&#xff1a;适用于多种场景的稳定显示解决方案 【下载地址】STM32的OLED显示程序亲测可用 这是一套专为STM32设计的OLED显示程序&#xff0c;经过实际测试&#xff0c;运行稳定可靠。支持多种OLED屏幕尺寸和类型&#xff0c;提供丰富的显示效果&am…...

【AI News | 20250529】每日AI进展

AI Repos 1、WebAgent 阿里巴巴通义实验室近日发布了WebDancer&#xff0c;一款旨在实现自主信息搜索的原生智能体搜索推理模型。WebDancer采用ReAct框架&#xff0c;通过分阶段训练范式&#xff0c;包括浏览数据构建、轨迹采样、监督微调和强化学习&#xff0c;赋予智能体自主…...

Day12 - 计算机网络 - HTTP

HTTP常用状态码及含义&#xff1f; 301和302区别&#xff1f; 301&#xff1a;永久性移动&#xff0c;请求的资源已被永久移动到新位置。服务器返回此响应时&#xff0c;会返回新的资源地址。302&#xff1a;临时性性移动&#xff0c;服务器从另外的地址响应资源&#xff0c;但…...

Linux驱动学习笔记(十)

热插拔 1.热插拔&#xff1a;就是带电插拔&#xff0c;即允许用户在不关闭系统&#xff0c;不切断电源的情况下拆卸或安装硬盘&#xff0c;板卡等设备。热插拔是内核和用户空间之间&#xff0c;通过调用用户空间程序实现交互来实现的&#xff0c;当内核发生了某种热拔插事件时…...

如何优化Elasticsearch的搜索性能?

优化 Elasticsearch 的搜索性能需要从索引设计、查询优化、硬件配置和集群调优等多方面入手。以下是系统化的优化策略和实操建议: 一、索引设计优化 1. 合理设置分片数 分片大小:单个分片建议 10-50GB(超过50GB会影响查询性能)。分片数量: 总分片数 ≤ 节点数 1000(避免…...

TI dsp FSI (快速串行接口)

简介 快速串行接口&#xff08;FSI - Fast Serial Interface &#xff09;模块是一种串行通信外设&#xff0c;能够在隔离设备之间实现可靠的高速通信。在两个没有共同电源和接地连接的电子电路必须交换信息的情况下&#xff0c;电气隔离设备被使用。 虽然隔离设备促进了信号通…...

责任链模式:构建灵活可扩展的请求处理体系(Java 实现详解)

一、责任链模式核心概念解析 &#xff08;一&#xff09;模式定义与本质 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;其核心思想是将多个处理者对象连成一条链&#xff0c;并沿着这条链传递请求&#xff0c;直到有某…...

nlp中的频率就是权重吗

&#x1f522; 一、“频率”是什么&#xff1f; 在 NLP 中&#xff0c;**词频&#xff08;frequency&#xff09;**通常指的是&#xff1a; 某个单词或 token 在语料库中出现的次数&#xff08;或比例&#xff09; 举例&#xff1a; "The cat sat on the mat. The cat i…...

融智学“新五常”框架:五维方式的重构与协同

融智学“新五常”框架&#xff1a;五维方式的重构与协同 一、理论基底&#xff1a;从传统老五常到当代新五常的范式跃迁 邹晓辉教授提出的新五常&#xff08;生活方式DBA、学习方式DBA、工作方式DBA、旅行方式DBA、娱乐方式DBA&#xff09;&#xff0c;本质是将融智学的核心原…...

wechat-003-学习笔记

1.路由跳转页面&#xff1a;携带的参数会出现在onlaod中的options中。 注意&#xff1a;原生小程序对路由传参的长度也有限制&#xff0c;过长会被截掉。 2.wx.setNavigationBarTitle(Object object) 动态设置当前页面的标题 3.在根目录中的app.json文件中配置 后台播放音乐的能…...