
本工具仅限学术交流使用,严格遵守相关法律法规,符合平台内容的合法及合规性要求,禁止用于任何商业用途!
我是@马哥python说,一枚10年+程序猿,现全职独立开发。
快手作为国内头部短视频社交平台,凭借其独特的普惠流量分发机制和庞大的创作者生态,覆盖了从一二线到下沉市场的海量用户群体。无论是热点追踪、内容分析还是用户洞察,快手都蕴含着丰富的数据价值。
针对快手平台数据的独特性,我用python独立开发了一款工具“爬快手聚合软件”。这款软件将评论采集、达人主页作品采集、链接转换三大功能集于一身,打造一站式的快手数据采集方案。
软件适用于以下场景:
运行界面:

采集到的作品数据,包括12个字段:关键词,页码,视频标题,话题标签,视频链接,点赞数,观看数,视频时长_秒,发布时间,作者昵称,作者uid,作者主页链接。

采集到的评论数据,包括10个字段:作品id,作品链接,页码,用户昵称,用户id,用户主页,评论时间,评论点赞数,评论级别,评论内容。

运行界面:

采集到的作品详情,包括18个字段:关键词,作品id,作品链接,视频标题,话题标签,作者昵称,作者uid,作者主页链接,发布时间,视频时长_秒,点赞数,观看数,评论数,收藏数,转发数,IP属地,封面链接,视频直链。

同时支持下载这些链接的视频mp4文件,方便归档,如下:

运行界面:

采集到的主页作品数据包含12个字段:页码,作者昵称,uid,作者链接,视频标题,视频标签,视频链接,发布时间,视频时长,点赞数,收藏数,观看数。

同时支持下载主页中的视频mp4文件,方便归档,如下:

运行界面:

结果数据:

运行界面:

结果数据:

运行界面:

结果数据:

以上是6个主要功能的介绍。
使用前请留意以下几点:
1. Windows / Mac 均可直接运行,无需配置编程环境
2. 三大核心功能:① 关键词/作品链接采集评论 ② 主页链接采集作品 ③ uid与链接互转
3. 采用接口协议采集,非模拟浏览器等RPA方案,稳定性更高
4. 采集完成后,自动在当前文件夹生成 csv 结果文件
5. 每采集一页即自动保存一次csv,防止异常中断导致数据丢失(每页间隔 1~2s)
6. 运行过程记录详细日志,方便回溯排查
软件全部基于 Python 开发,各模块分工如下:
序号 | 模块 | 用途 |
|---|---|---|
1 | tkinter | 构建gui图形界面 |
2 | requests | 发送网络爬虫请求 |
3 | json | 解析接口返回的响应数据 |
4 | pandas | 清洗并保存csv数据结果 |
5 | logging | 记录运行日志 |
模块分工明确,便于后期版本迭代,持续维护。
2.2 代码片段示例
发送请求并解析数据:
# 发送请求
r = requests.get(url, headers=h1, params=params)
# 解析数据
json_data = r.json()
遍历评论内容字段:
for data in json_data['rootCommentsV2']:
# 评论内容
content = data['content']
content_list.append(content)
保存数据到 csv 文件:
# 保存数据到DF
df = pd.DataFrame(
{
'作品id': video_id,
'作品链接': 'https://www.kuaishou.com/short-video/' + video_id,
'页码': page,
'用户昵称': author_name_list,
'用户id': author_id_list,
'用户主页': author_link_list,
'评论时间': create_time_list,
'评论点赞数': like_count_list,
'评论级别': comment_level_list,
'评论内容': content_list,
}
)
# 保存到csv
if os.path.exists(self.result_file2): # 如果文件存在,不再设置表头
header = False
else: # 否则,设置csv文件表头
header = True
df.to_csv(self.result_file2, mode='a+', index=False, header=header, encoding='utf_8_sig')
self.tk_show('视频[{}]第{}页已保存到csv: {}'.format(video_id, page, self.result_file2))
日志记录模块:
def get_logger(self):
logger = logging.getLogger(__name__)
formatter = "[%(asctime)s-%(filename)s][%(funcName)s-%(lineno)d]--%(message)s"
logger.setLevel(logging.DEBUG)
ifnot logger.handlers:
sh = logging.StreamHandler()
log_formatter = logging.Formatter(formatter, datefmt="%Y-%m-%d %H:%M:%S")
info_file_name = time.strftime("%Y-%m-%d") + ".log"
case_dir = "./logs/"
info_handler = TimedRotatingFileHandler(
filename=case_dir + info_file_name,
when="MIDNIGHT",
interval=1,
backupCount=7,
encoding="utf-8",
)
logger.addHandler(sh)
sh.setFormatter(log_formatter)
logger.addHandler(info_handler)
info_handler.setFormatter(log_formatter)
return logger
启动采集前,先用《cookie小工具》自动配置个人cookie:

这样,就会自动写入软件目录下的 cookie.txt 文件,告别繁琐的手动获取过程。
将 Cookie 配置好后,启动软件进入登录界面,点击登录完成身份认证。