大家好,应同学们私信要求,出一篇关于微博博主已发布的内容脚本可视化的案例,于是整理了一下,仅供学习参考。
项目功能简介:
1.可视化式配置;
2.任意博主;
3.自动翻页;
4.支持指定最大翻页页码;
5.数据保存到csv
文件;
6.程序支持打包成exe
文件;
7.项目操作说明文档;
8.多线程并发(根据系统内核数、输入的线程数、博主id数量,计算出最合理的最终线程数);
9.支持爬虫暂停;
10.预留数据库配置,方便二次开发;
11.界面逻辑与获取数据逻辑已拆分(支持无界面运行);
一.最终效果
参数校验:
运行过程:
保存数据到csv:
二.项目代码
2.1 编写界面
该脚本的界面使用PyQt5
库开发,经过测试这个库的运行时性能要优于Tkinter
,特别是实在多数据数据表单滑动,Tkinter
卡顿太严重,因此我们使用性能出色的PyQt5
来实现,界面编写过程大致如下:
class MyForm(QWidget):
update_table_signal = pyqtSignal(dict)
def __init__(self):
super().__init__()
...
self.initUI()
def initUI(self):
# 设置窗口属性
self.setGeometry(100, 100, 1000, 600)
self.setWindowTitle('微博·任意博主已发布的所有微博·可视化爬虫')
self.center_on_screen()
# 在垂直布局中添加第一排和第二排的水平布局
self.layout = QVBoxLayout()
self.fileButton = QPushButton('选择用户ID文件(.csv)', self)
self.fileButton.clicked.connect(self.openFileDialog)
self.layout.addWidget(self.fileButton)
self.directoryLabel = QLabel(self) # 添加一个标签来显示用户选择的目录路径
self.layout.addWidget(self.directoryLabel)
# 第二排
self.layout_row2 = QHBoxLayout()
self.btn_start = QPushButton('开始采集')
self.btn_stop = QPushButton('停止采集')
self.btn_stop.setEnabled(False)
self.label_delay = QLabel('延时')
...
三.批量保存数据
数据保存继续使用pandas
库,安装: pip install pandas
,使用pandas
批量保存,用法如下:
import pandas as pd
list = [
{
"uid":"",
...
"mblogid":"",
},{
"nickname":"",
...
"like":"",
}
]
df = pd.DataFrame(list)
df.to_csv('result.csv', index=False, columns=["uid", 'mblogid', "nickname", "publish_time", "device_info", "weibo_content", "forward", "comment", "like"])
四.运行日志
多线程日志:
开始请求1644114654第1页...
开始请求1408078073第1页...
开始解析第1页数据...
数据保存中...
共有48271条:
开始解析第1页数据...
数据保存中...
共有163331条:
开始请求1408078073第2页...
开始请求1644114654第2页...
开始解析第2页数据...
数据保存中...
开始解析第2页数据...
数据保存中...
开始请求1408078073第3页...
开始请求1644114654第3页...
开始解析第3页数据...
数据保存中...
触发调试配置的最大页码数3,已停止当前用户ID的爬取!
开始解析第3页数据...
数据保存中...
触发调试配置的最大页码数3,已停止当前用户ID的爬取!
开始请求1711530911第1页...
开始解析第1页数据...
数据保存中...
共有126988条:
开始请求1711530911第2页...
开始解析第2页数据...
数据保存中...
开始请求1711530911第3页...
开始解析第3页数据...
数据保存中...
触发调试配置的最大页码数3,已停止当前用户ID的爬取!
上面是在配置文件中配置了最大页码为3,可配置。设置-1时自动获取全部。
五.项目说明文档
项目说明
安装 python3
到官网下载 python 3.8.x 版本安装包,根据提示安装(windows 请勾选添加环境变量复选框)
python 包管理器安装阿里云镜像源加速:
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
注意:python 是 3.8.x,不能是 3.9+(否则 pyinstaller 打包时可能报错)
本地运行
pip install pandas PyQt5
python3 main.py
开始打包
pyinstaller -F -w --name '微博·任意博主已发布的所有微博·可视化爬虫' main.py (没有 main.spec 文件用此命令)
或者
pyinstaller main.spec (有 main.spec 文件可用此命令)
六.获取完整源码
爱学习的小伙伴,本次案例的完整源码,已上传微信公众号:一个努力奔跑的snail
,后台回复 微博user
即可获取。