【爬虫实战】2024知乎热榜可视化爬取

项目功能简介:

1.支持配置;
2.单次爬取;
3.循环爬取;
4.爬虫暂停;
5.数据清除;
6.数据保存到csv文件;
7.程序支持打包成exe文件;
8.项目操作说明文档;
9.模块封装到类,方便学习、二次开发;

一.最终效果

1.1程序界面:

1.2保存数据到csv:

二.项目代码

2.1 编写界面

该脚本的界面使用PyQt5库开发,经过测试这个库的运行时性能要优于Tkinter,特别是实在多数据数据表单滑动,Tkinter卡顿太严重,因此我们使用性能出色的PyQt5来实现,界面编写过程大致如下:

class MyForm(QWidget):update_table_signal = pyqtSignal(dict)current_row = 0my_timer = Nonerefresh_counts = 0def __init__(self):super().__init__()self.thread_pool = QThreadPool()self.form_data = {}...def initUI(self):# 设置窗口属性self.setGeometry(100, 100, 1000, 600)self.setWindowTitle('知乎·热榜·可视化抓取')self.center_on_screen()# 在垂直布局中添加第一排和第二排的水平布局self.layout = QVBoxLayout()# 第二排self.layout_row2 = QHBoxLayout()self.btn_start = QPushButton('开始采集')self.btn_stop = QPushButton('停止采集')self.btn_stop.setEnabled(False)self.label_counts = QLabel('每隔多久重新采集一次')self.layout.addLayout(self.layout_row2)self.table = QTableWidget(self)...
2.2 配置

请求数据需要的headers、cookies、请求url都在config.json文件中配置,如下图:

2.3 操作说明

1.不输入时间间隔默认为单次采集,输入后会以秒为单位重复采集;

2.重复采集时会如果热榜有更新,会增量更新,例如最新一次的数据与前一次的数据有不同的A数据,则A数据会增量更新到结果中;如果数据A已经存在,则用最新的数据更新A,而不会在csv中新增一行;

3.“停止按钮”按钮被点击后,会等待正在爬取的行为完成后停止后续爬取行为(可根据按钮是否可点击指示操作即可!)

三.保存数据

数据保存继续使用pandas库,安装: pip install pandas,使用pandas保存,用法如下:

    def data_to_save(self, data_list):# 创建 DataFrame 对象df = pd.DataFrame(data_list)# 检查是否有文件has_file = self.check_data()if not has_file:# 不存在则添加df.to_csv(self.file_path, index=False, columns=["titleArea", "metricsArea", "answerCount", "link", "excerptArea"])return# 读取文件exist_df = pd.read_csv(self.file_path)# 合并数据merged_df = pd.merge(exist_df, df, on="link", how="outer")# 去重merged_df = merged_df.drop_duplicates(subset="link", keep="last")...

代码中已添加注释,方便初学者理解

四.项目说明文档

安装 python3

到官网下载 python 3.8.x 版本安装包,根据提示安装(windows 请勾选添加环境变量复选框)

注意:python3.8.x,不能是 3.9+(否则 pyinstaller 打包时可能报错)

本地运行

pip install pandas bs4 PyQt5python3 main.py

开始打包

pyinstaller -F -w --name '知乎·热榜·可视化抓取' main.py (没有 main.spec 文件用此命令)
或者
pyinstaller main.spec (有 main.spec 文件可用此命令)pyinstaller 打包完成后,项目的根目录下会自动生成一个 dist 目录,exe 文件就在此目录中,此时的 exe 可以单独拷贝到任何地方运行;运行 exe 文件之前务必看下面的“注意事项”。

五.获取完整源码

爱学习的小伙伴,本次案例的完整源码,已上传微信公众号:一个努力奔跑的snail,后台回复 知乎热榜 即可获取。

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

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

相关文章

Vue中的组件

在应用程序的开发中,组件是不可缺少的。在Vue的使用中,同样也会用到组件。   1、组件的名字唯一;   2、组件以Html形式书写;   3、组件可以复用;   4、组件可以嵌套;   5、组件可以相互调用&…

Docker(七)使用网络

作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! Docker 中的网络功能介绍 Docker 允许通过外部访问容器或容器互联的方式来提供网络服务。 一、外部访问容器 容器中可以运行一些网络应用&…

【计算机网络】2、传输介质、通信方向、通信方式、交换方式、IP地址表示、子网划分

文章目录 传输介质双绞线无屏蔽双绞线UTP屏蔽双绞线STP 网线光纤多模光纤MMF单模光纤SMF 无线信道无线电波红外光波 通信方向单工半双工全双工 通信方式异步传输同步传输串行传输并行传输 交换方式电路交换报文交换分组交换 IP地址表示IP地址的定义IP地址的分类无分类编址特殊I…

NVIDIA 大模型 RAG 分享笔记

文章目录 大语言模型在垂直领域落地的三个挑战:什么是 RAG以及为什么能解决大预言模型所带来的的这三个问题RAG 不是一项技术而是整体的 Pipeline非参数化 :数据库部分加载到数据库中检索阶段 提升检索效率的技术检索前:对query做处理use que…

2024年MacBookPro电脑数据恢复软件EasyRecovery数据恢复

前天新入手了一台MacBook pro,第一次用Mac激动的心情简直难以言喻,可是随后这激动的心情顿时就烟消云散了,因为对Mac操作系统的不熟练,导致我删除了一份很重要的Word文件。MacBook pro如何恢复误删除的文件?就这件事我向朋友求助…

网站批量管理软件【最新免费】

在网站运营的过程中,站群软件成为提高效率、管理多个网站的得力助手。本文将专心分享三款卓越的站群软件,其中特别推荐147SEO软件,它不仅能够批量管理网站,还能自动更新原创文章,并主动推送各大搜索引擎。不论您运营何…

c语言空指针

系列文章目录 c语言空指针 c语言空指针 系列文章目录c语言空指针 c语言空指针 空指针 没有指向任何的地址(其指向0的地址) 空制指针就是指向内存编号为零的空间,操作该内存空间会报错,一般情况空指针用于程序条件判断 操作空指针 …

AIGC实战——深度学习 (Deep Learning, DL)

AIGC实战——深度学习 0. 前言1. 深度学习基本概念1.1 基本定义1.2 非结构化数据 2. 深度神经网络2.1 神经网络2.2 学习高级特征 3. TensorFlow 和 Keras4. 多层感知器 (MLP)4.1 准备数据4.2 构建模型4.3 检查模型4.4 编译模型4.5 训练模型4.6 评估模型 小结系列链接 0. 前言 …

数据在内存中的存储(整型与浮点数类型)

目录 数据类型详细介绍 数据类型介绍 数据类型的基本归类 整型在内存中的存储 原码、反码、补码 ​编辑 大小端介绍 例题 浮点型在内存中的存储 常见的浮点数 浮点数存储的例子(具体解析浮点数存储) 解析最初的例题 数据类型详细介绍 数据类…

FPGA高端项目:Xilinx Artix7 系列FPGA纯verilog图像缩放工程解决方案 提供4套工程源码和技术支持

目录 1、前言版本更新说明给读者的一封信FPGA就业高端项目培训计划免责声明 2、相关方案推荐我这里已有的FPGA图像缩放方案本方案在Xilinx Kintex7 系列FPGA上的应用本方案在国产FPGA紫光同创系列上的应用本方案在国产FPGA高云系列上的应用 3、设计思路框架设计框图视频源选择o…

前台vue配置

前台 vue环境 1.傻瓜式安装node: 官网下载:https://nodejs.org/zh-cn/2.安装cnpm: >: npm install -g cnpm --registryhttps://registry.npm.taobao.org3.安装vue最新脚手架: >: cnpm install -g vue/cli注:如果2、3步报错,清除缓…

ClickHouse与Doris数据库比较

概述 都说“实践是检验真理的唯一标准”,光说不练假把式,那么本文就通过实际的测试来感受一下Doris和clickhouse在读写方面的性能差距,看看Doris盛名之下,是否真有屠龙之技;clickhouse长锋出鞘,是否敢缚苍…

JVM 如何判断一个对象可以被回收

Hi, 我是 浮生。 今天分享一道一线互联网公司必问的面试题。 ”JVM 如何判断一个对象可以被回收“ 关于这个问题,来看看高手的回答。 一、问题解析 在 JVM 里面,要判断一个对象是否可以被回收,最重要的是判断这个对象是否还在被…

Web3解密:区块链技术如何颠覆传统互联网

随着区块链技术的崛起,Web3正逐渐成为新一代互联网的代名词。它不再依赖中心化的权威机构,而是通过去中心化、透明、安全的特性,为用户带来更为开放和公正的互联网体验。本文将深入解密Web3,揭示区块链技术如何颠覆传统互联网的基…

ZABBIX根据IP列表,主机描述,或IP子网批量创建主机的维护任务

有时候被ZABBIX监控的主机可能需要关机重启等维护操作,为了在此期间不触发告警,需要创建主机的维护任务,以免出现误告警 ZABBIX本身有这个API可供调用(不同版本细节略有不同,本次用的ZABBIX6.*),实现批量化建立主机的维护任务 无论哪种方式(IP列表,主机描述,或IP子网)创建维护…

【C语言】linux内核ipoib模块 - ipoib_start_xmit

一、ipoib_start_xmit函数定义 static netdev_tx_t ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev) {struct ipoib_dev_priv *priv ipoib_priv(dev);struct rdma_netdev *rn netdev_priv(dev);struct ipoib_neigh *neigh;struct ipoib_pseudo_header *phdr…

[AI]文心一言爆火的同时,ChatGPT-4.5的正确打开方式

前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言4.5key价格泄漏ChatGPT4.0使用地址ChatGPT正确打开方式最新功能语音助手存档…

STM32标准库开发——串口发送/单字节接收

USART基本结构 串口发送信息 启动串口一的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);初始化对应串口一的时钟,引脚,将TX引脚设置为复用推挽输出。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitTypeDef GPIO_In…

css绘制下拉框头部三角(分实心/空心)

1:需求图: 手绘下拉框 带三角 2:网上查了一些例子,但都是实心的, 可参考,如图: (原链接: https://blog.csdn.net/qq_33463449/article/details/113375804) 3:简洁版的: a: 实心: <view class"angle"/>.angle{width:0;height:0;border-left: 10px solid t…

元宇宙:智慧城市建设的未来引擎与价值之源

在21世纪的技术大潮中&#xff0c;元宇宙的出现无疑是一场革命&#xff0c;其独特的概念与价值已经引发了全球范围内的关注。 作为新兴科技的前沿&#xff0c;元宇宙为智慧城市建设带来了无限的可能性和价值&#xff0c;有望成为未来城市发展的核心动力。 元宇宙&#xff0c;这…