在当今短视频时代,抖音作为头部平台积累了海量用户数据。我经常需要分析抖音账号的粉丝特征,但官方API限制严格。本文将分享我如何使用Python,通过浏览器自动化技术抓取抖音粉丝列表。思路我选择使用DrissionPage库而非传统的Selenium,主要因为:
[Python] 纯文本查看 复制代码from DrissionPage import ChromiumPage, ChromiumOptions
class DouyinFollowerListener:
def __init__(self):
# 配置浏览器选项
co = ChromiumOptions()
co.headless(False) # 显示浏览器窗口
# 初始化浏览器
self.page = ChromiumPage(addr_or_opts=co)
self.page.set.user_agent(
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
)
def start_listening(self):
"""启动监听服务"""
print("抖音粉丝监听器启动...")
print("1. 请手动打开目标用户主页")
print("2. 点击「粉丝」标签页")
print("3. 滚动加载更多粉丝数据")
print("按 Ctrl+C 停止监听\n")
# 精确监听你提供的API地址
self.page.listen.start('https://www.douyin.com/aweme/v1/web/user/follower/list/')
try:
while True:
# 等待API响应
packet = self.page.listen.wait()
if packet:
self._process_packet(packet)
except KeyboardInterrupt:
print("\n监听已停止")
finally:
self.page.quit()
def _process_packet(self, packet):
"""处理API返回的数据包"""
try:
# 直接使用已解析的响应数据
data = packet.response.body # 这里已经是字典了
# 提取粉丝列表
followers = data.get('followers', [])
if not followers:
print("未获取到粉丝数据")
return
# 提取所需字段
for user in followers:
user_info = {
'uid': user.get('uid'),
'nickname': user.get('nickname'),
'signature': user.get('signature') or "无简介" # 处理空简介情况
}
print(
f"获取到用户: UID={user_info['uid']}, 昵称={user_info['nickname']}, 简介={user_info['signature']}")
except Exception as e:
print(f"处理数据时出错: {str(e)}")
print("完整响应数据:", packet.response.body) # 打印原始数据用于调试
if __name__ == "__main__":
listener = DouyinFollowerListener()
listener.start_listening()