新手小白通过python获取抖音粉丝列表用户(仅供交流)

查看 14|回复 0
作者:GUoOoOoOoOD   
新手小白通过python获取抖音粉丝列表用户(仅供交流)
在当今短视频时代,抖音作为头部平台积累了海量用户数据。我经常需要分析抖音账号的粉丝特征,但官方API限制严格。本文将分享我如何使用Python,通过浏览器自动化技术抓取抖音粉丝列表。思路我选择使用DrissionPage库而非传统的Selenium,主要因为:
  • 它直接基于Chromium内核,无需额外驱动
  • 提供便捷的网络监听功能
  • 支持同步和异步两种模式
  • 相比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()

    粉丝, 数据

  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部