更新日志
所有版本更新日志会记录在这里
v0.4.0(2020-03-23)
修复id转eid的一些bug
从该版本开始,爬取视频均为无水印
v0.3.0(2020-03-10)
修复一些因为用户昵称中存在windows下文件(夹)名非法字符导致os无法写入读取的bug
简单看了一点python面向对象,将核心功能提取为crawler类,降低耦合
基于crawler类,分出两个文件,一个用于直接在python环境下跑代码,另一个则用于打包好exe一键运行
提供exe版本
v0.2.0(2020-02-26)
增加对数字id自动查询转换为eid的支持
v0.1.1 (2020-02-25)
修复caption项文字保存为文件名的各种问题
增加对workType 'ksong'、'single'的支持
增加对于爬取过程中请求失败的解决方法
增加CHANGELOG.md
写在前面
代码功能如题,根据快手用户的id来爬取用户所有公开作品,包括图集和视频。
原理:其实就是利用基于chromium内核的浏览器自带的devtools对所有请求进行排查找出包含作品链接的请求,然后用代码模拟请求去获得数据,再根据url下载作品保存就行了,包括一些网站的自动注册登录、操作都可以模拟。这个其实应该算是写过爬虫的同学们都知道,我自己其实不怎么用过python,也没写过什么复杂的python项目,说的不对的还请多多包涵。如果有同学还是想让我讲一下怎么爬的,我考虑再做一期详细的,其实代码应该还是可以看得懂的2333
核心代码
废话不多说,上核心代码
def __crawl_user(self, uid):
if uid.isdigit():
uid = self.__switch_id(uid)
payload = {"operationName": "privateFeedsQuery",
"variables": {"principalId": uid, "pcursor": "", "count": 999},
"query": "query privateFeedsQuery($principalId: String, $pcursor: String, $count: Int) {\n privateFeeds(principalId: $principalId, pcursor: $pcursor, count: $count) {\n pcursor\n list {\n id\n thumbnailUrl\n poster\n workType\n type\n useVideoPlayer\n imgUrls\n imgSizes\n magicFace\n musicName\n caption\n location\n liked\n onlyFollowerCanComment\n relativeHeight\n timestamp\n width\n height\n counts {\n displayView\n displayLike\n displayComment\n