Python 抖音网页版获取指定视频评论数据

2,280 阅读1分钟
本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末

抖音网页版获取指定视频评论数据请添加图片描述


模块

  • Python:3.9.2
  • requests:2.25.1
  • execjs:1.5.1

根据视频ID 获取视频总评论数

    def get_total(self, method, aweme_id=None, cursor=None):
        """
        根据视频ID 获取视频总评论数
        method:评论接口 cooment
        aweme_id:视频id
        cursor:页数
        """
        self.log.info('获取视频评论数量')
        # 读取本地js文件
        with open('_signature.js', 'r', encoding='utf-8') as f:
            f = f.read()
        # 编译并加载js文件内容:execjs.compile() 返回的是一个对象
        e = execjs.compile(f)
        # call():调用js中的方法
        url = e.call(method, aweme_id, cursor*20)
        response = self._parse_url(url=url)
        if not response:
            self.log.info('数据获取失败!')
            exit()
        total = response.json().get('total')
        # 根据总数量计算页数,一页20条数据
        total_page = int(int(total) / 20)
        self.log.info(f'视频id:{aweme_id} 评论数:{total} 共:{total_page}页数据')
        return total_page

根据视频ID 获取视频评论信息

    def get_comment(self, method, aweme_id=None, cursor=None):
        """
        根据视频ID 获取视频评论信息
        method:评论接口 cooment
        aweme_id:视频id
        cursor:页数
        """
        # 读取本地js文件
        with open('_signature.js', 'r', encoding='utf-8') as f:
            b = f.read()
        # 编译并加载js文件内容:execjs.compile() 返回的是一个对象
        c = execjs.compile(b)
        # 调用js中的方法:call()
        d = c.call(method, aweme_id, cursor*20)
        response = self._parse_url(url=d)
        print(response.text)
        if not response:
            self.log.info('数据获取失败!')
            exit()
        # 解析aweme_id和userid,拼接保存文件名
        result = response.json()
        comments = result.get('comments')
        for comment in comments:
            aweme_id = comment.get('aweme_id')
            user_id = comment.get('user').get('uid')
            filename = f'{aweme_id}-{user_id}'
            yield filename, comment

数据保存

        def save_json(self, filename, data):
        """
        保存数据 为json
        """
        filename = self.path + os.sep + filename + '.json'
        with open(filename, 'w', encoding='utf-8') as f:
            f.write(json.dumps(data, ensure_ascii=True))

本文仅供学习交流使用,如侵立删! 企鹅 、WX: 1033383881